Skip to content
Snippets Groups Projects
  1. Nov 02, 2017
    • Greg Kroah-Hartman's avatar
      License cleanup: add SPDX GPL-2.0 license identifier to files with no license · b2441318
      Greg Kroah-Hartman authored
      
      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 <5
         lines).
      
      All documentation files were explicitly excluded.
      
      The following heuristics were used to determine which SPDX license
      identifiers to apply.
      
       - when both scanners couldn't find any license traces, file was
         considered to have no license information in it, and the top level
         COPYING file license applied.
      
         For non */uapi/* files that summary was:
      
         SPDX license identifier                            # files
         ---------------------------------------------------|-------
         GPL-2.0                                              11139
      
         and resulted in the first patch in this series.
      
         If that file was a */uapi/* path one, it was "GPL-2.0 WITH
         Linux-syscall-note" otherwise it was "GPL-2.0".  Results of that was:
      
         SPDX license identifier                            # files
         ---------------------------------------------------|-------
         GPL-2.0 WITH Linux-syscall-note                        930
      
         and resulted in the second patch in this series.
      
       - if a file had some form of licensing information in it, and was one
         of the */uapi/* ones, it was denoted with the Linux-syscall-note if
         any GPL family license was found in the file or had no licensing in
         it (per prior point).  Results summary:
      
         SPDX license identifier                            # files
         ---------------------------------------------------|------
         GPL-2.0 WITH Linux-syscall-note                       270
         GPL-2.0+ WITH Linux-syscall-note                      169
         ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause)    21
         ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)    17
         LGPL-2.1+ WITH Linux-syscall-note                      15
         GPL-1.0+ WITH Linux-syscall-note                       14
         ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause)    5
         LGPL-2.0+ WITH Linux-syscall-note                       4
         LGPL-2.1 WITH Linux-syscall-note                        3
         ((GPL-2.0 WITH Linux-syscall-note) OR MIT)              3
         ((GPL-2.0 WITH Linux-syscall-note) AND MIT)             1
      
         and that resulted in the third patch in this series.
      
       - when the two scanners agreed on the detected license(s), that became
         the concluded license(s).
      
       - when there was disagreement between the two scanners (one detected a
         license but the other didn't, or they both detected different
         licenses) a manual inspection of the file occurred.
      
       - In most cases a manual inspection of the information in the file
         resulted in a clear resolution of the license that should apply (and
         which scanner probably needed to revisit its heuristics).
      
       - When it was not immediately clear, the license identifier was
         confirmed with lawyers working with the Linux Foundation.
      
       - If there was any question as to the appropriate license identifier,
         the file was flagged for further research and to be revisited later
         in time.
      
      In total, over 70 hours of logged manual review was done on the
      spreadsheet to determine the SPDX license identifiers to apply to the
      source files by Kate, Philippe, Thomas and, in some cases, confirmation
      by lawyers working with the Linux Foundation.
      
      Kate also obtained a third independent scan of the 4.13 code base from
      FOSSology, and compared selected files where the other two scanners
      disagreed against that SPDX file, to see if there was new insights.  The
      Windriver scanner is based on an older version of FOSSology in part, so
      they are related.
      
      Thomas did random spot checks in about 500 files from the spreadsheets
      for the uapi headers and agreed with SPDX license identifier in the
      files he inspected. For the non-uapi files Thomas did random spot checks
      in about 15000 files.
      
      In initial set of patches against 4.14-rc6, 3 files were found to have
      copy/paste license identifier errors, and have been fixed to reflect the
      correct identifier.
      
      Additionally Philippe spent 10 hours this week doing a detailed manual
      inspection and review of the 12,461 patched files from the initial patch
      version early this week with:
       - a full scancode scan run, collecting the matched texts, detected
         license ids and scores
       - reviewing anything where there was a license detected (about 500+
         files) to ensure that the applied SPDX license was correct
       - reviewing anything where there was no detection but the patch license
         was not GPL-2.0 WITH Linux-syscall-note to ensure that the applied
         SPDX license was correct
      
      This produced a worksheet with 20 files needing minor correction.  This
      worksheet was then exported into 3 different .csv files for the
      different types of files to be modified.
      
      These .csv files were then reviewed by Greg.  Thomas wrote a script to
      parse the csv files and add the proper SPDX tag to the file, in the
      format that the file expected.  This script was further refined by Greg
      based on the output to detect more types of files automatically and to
      distinguish between header and source .c files (which need different
      comment types.)  Finally Greg ran the script using the .csv files to
      generate the patches.
      
      Reviewed-by: default avatarKate Stewart <kstewart@linuxfoundation.org>
      Reviewed-by: default avatarPhilippe Ombredanne <pombredanne@nexb.com>
      Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b2441318
  2. Jun 16, 2014
  3. Jul 14, 2013
    • Paul Gortmaker's avatar
      kernel: delete __cpuinit usage from all core kernel files · 0db0628d
      Paul Gortmaker authored
      The __cpuinit type of throwaway sections might have made sense
      some time ago when RAM was more constrained, but now the savings
      do not offset the cost and complications.  For example, the fix in
      commit 5e427ec2 ("x86: Fix bit corruption at CPU resume time")
      is a good example of the nasty type of bugs that can be created
      with improper use of the various __init prefixes.
      
      After a discussion on LKML[1] it was decided that cpuinit should go
      the way of devinit and be phased out.  Once all the users are gone,
      we can then finally remove the macros themselves from linux/init.h.
      
      This removes all the uses of the __cpuinit macros from C files in
      the core kernel directories (kernel, init, lib, mm, and include)
      that don't really have a specific maintainer.
      
      [1] https://lkml.org/lkml/2013/5/20/589
      
      
      
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      0db0628d
  4. Mar 23, 2012
  5. Dec 05, 2011
    • Jack Steiner's avatar
      x86: Reduce clock calibration time during slave cpu startup · b565201c
      Jack Steiner authored
      
      Reduce the startup time for slave cpus.
      
      Adds hooks for an arch-specific function for clock calibration.
      These hooks are used on x86.  If a newly started cpu has the
      same phys_proc_id as a core already active, uses the TSC for the
      delay loop and has a CONSTANT_TSC, use the already-calculated
      value of loops_per_jiffy.
      
      This patch reduces the time required to start slave cpus on a
      4096 cpu system from: 465 sec OLD 62 sec NEW
      
      This reduces boot time on a 4096p system by almost 7 minutes.
      Nice...
      
      Signed-off-by: default avatarJack Steiner <steiner@sgi.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: John Stultz <john.stultz@linaro.org>
      [fix CONFIG_SMP=n build]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      b565201c
  6. Jul 26, 2011
    • Sameer Nanda's avatar
      init: skip calibration delay if previously done · 7afe1845
      Sameer Nanda authored
      
      For each CPU, do the calibration delay only once.  For subsequent calls,
      use the cached per-CPU value of loops_per_jiffy.
      
      This saves about 200ms of resume time on dual core Intel Atom N5xx based
      systems.  This helps bring down the kernel resume time on such systems
      from about 500ms to about 300ms.
      
      [akpm@linux-foundation.org: make cpu_loops_per_jiffy static]
      [akpm@linux-foundation.org: clean up message text]
      [akpm@linux-foundation.org: fix things up after upstream rmk changes]
      Signed-off-by: default avatarSameer Nanda <snanda@chromium.org>
      Cc: Phil Carmody <ext-phil.2.carmody@nokia.com>
      Cc: Andrew Worsley <amworsley@gmail.com>
      Cc: David Daney <ddaney@caviumnetworks.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7afe1845
  7. Jun 23, 2011
    • Russell King's avatar
      Fix CPU spinlock lockups on secondary CPU bringup · 1b19ca9f
      Russell King authored
      
      Secondary CPU bringup typically calls calibrate_delay() during its
      initialization.  However, calibrate_delay() modifies a global variable
      (loops_per_jiffy) used for udelay() and __delay().
      
      A side effect of 71c696b1 ("calibrate: extract fall-back calculation
      into own helper") introduced in the 2.6.39 merge window means that we
      end up with a substantial period where loops_per_jiffy is zero.  This
      causes the spinlock debugging code to malfunction:
      
      	u64 loops = loops_per_jiffy * HZ;
      	for (;;) {
      		for (i = 0; i < loops; i++) {
      			if (arch_spin_trylock(&lock->raw_lock))
      				return;
      			__delay(1);
      		}
      		...
      	}
      
      by never calling arch_spin_trylock() - resulting in the CPU locking
      up in an infinite loop inside __spin_lock_debug().
      
      Work around this by only writing to loops_per_jiffy only once we have
      completed all the calibration decisions.
      
      Tested-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Cc: <stable@kernel.org> (2.6.39-stable)
      --
      Better solutions (such as omitting the calibration for secondary CPUs,
      or arranging for calibrate_delay() to return the LPJ value and leave
      it to the caller to decide where to store it) are a possibility, but
      would be much more invasive into each architecture.
      
      I think this is the best solution for -rc and stable, but it should be
      revisited for the next merge window.
      
       init/calibrate.c |   14 ++++++++------
       1 files changed, 8 insertions(+), 6 deletions(-)
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1b19ca9f
  8. Jun 16, 2011
  9. May 25, 2011
    • Andrew Worsley's avatar
      init/calibrate.c: fix for critical bogoMIPS intermittent calculation failure · d2b46313
      Andrew Worsley authored
      A fix to the TSC (Time Stamp Counter) based bogoMIPS calculation used on
      secondary CPUs which has two faults:
      
      1: Not handling wrapping of the lower 32 bits of the TSC counter on
         32bit kernel - perhaps TSC is not reset by a warm reset?
      
      2: TSC and Jiffies are no incrementing together properly.  Either
         jiffies increment too quickly or Time Stamp Counter isn't incremented
         in during an SMI but the real time clock is and jiffies are
         incremented.
      
      Case 1 can result in a factor of 16 too large a value which makes udelay()
      values too small and can cause mysterious driver errors.  Case 2 appears
      to give smaller 10-15% errors after averaging but enough to cause
      occasional failures on my own board
      
      I have tested this code on my own branch and attach patch suitable for
      current kernel code.  See below for examples of the failures and how the
      fix handles these situations now.
      
      I reported this issue earlier here:
           Intermittent problem with BogoMIPs calculation on Intel AP CPUs -
      http://marc.info/?l=linux-kernel&m=129947246316875&w=4
      
      I suspect this issue has been seen by others but as it is intermittent and
      bogoMIPS for secondary CPUs are no longer printed out it might have been
      difficult to identify this as the cause.  Perhaps these unresolved issues,
      although quite old, might be relevant as possibly this fault has been
      around for a while.  In particular Case 1 may only be relevant to 32bit
      kernels on newer HW (most people run 64bit kernels?).  Case 2 is less
      dramatic since the earlier fix in this area and also intermittent.
      
         Re: bogomips discrepancy on Intel Core2 Quad CPU -
      http://marc.info/?l=linux-kernel&m=118929277524298&w=4
         slow system and bogus bogomips  -
      http://marc.info/?l=linux-kernel&m=116791286716107&w=4
         Re: Re: [RFC-PATCH] clocksource: update lpj if clocksource has -
      http://marc.info/?l=linux-kernel&m=128952775819467&w=4
      
      
      
      This issue is masked a little by commit feae3203 ("timers, init:
      Limit the number of per cpu calibration bootup messages") which only
      prints out the first bogoMIPS value making it much harder to notice other
      values differing.  Perhaps it should be changed to only suppress them when
      they are similar values?
      
      Here are some outputs showing faults occurring and the new code handling
      them properly.  See my earlier message for examples of the original
      failure.
      
          Case 1:   A Time Stamp Counter wrap:
      ...
      Calibrating delay loop (skipped), value calculated using timer
      frequency.. 6332.70 BogoMIPS (lpj=31663540)
      ....
      calibrate_delay_direct() timer_rate_max=31666493
      timer_rate_min=31666151 pre_start=4170369255 pre_end=4202035539
      calibrate_delay_direct() timer_rate_max=2425955274
      timer_rate_min=2425954941 pre_start=4265368533 pre_end=2396356387
      calibrate_delay_direct() ignoring timer_rate as we had a TSC wrap
      around start=4265368581 >=post_end=2396356511
      calibrate_delay_direct() timer_rate_max=31666274
      timer_rate_min=31665942 pre_start=2440373374 pre_end=2472039515
      calibrate_delay_direct() timer_rate_max=31666492
      timer_rate_min=31666160 pre_start=2535372139 pre_end=2567038422
      calibrate_delay_direct() timer_rate_max=31666455
      timer_rate_min=31666207 pre_start=2630371084 pre_end=2662037415
      Calibrating delay using timer specific routine.. 6333.28 BogoMIPS (lpj=31666428)
      Total of 2 processors activated (12665.99 BogoMIPS).
      ....
      
          Case 2:  Some thing (presumably the SMM interrupt?) causing the
      very low increase in TSC counter for the DELAY_CALIBRATION_TICKS
      increase in jiffies
      ...
      Calibrating delay loop (skipped), value calculated using timer
      frequency.. 6333.25 BogoMIPS (lpj=31666270)
      ...
      calibrate_delay_direct() timer_rate_max=31666483
      timer_rate_min=31666074 pre_start=4199536526 pre_end=4231202809
      calibrate_delay_direct() timer_rate_max=864348 timer_rate_min=864016
      pre_start=2405343672 pre_end=2406207897
      calibrate_delay_direct() timer_rate_max=31666483
      timer_rate_min=31666179 pre_start=2469540464 pre_end=2501206823
      calibrate_delay_direct() timer_rate_max=31666511
      timer_rate_min=31666122 pre_start=2564539400 pre_end=2596205712
      calibrate_delay_direct() timer_rate_max=31666084
      timer_rate_min=31665685 pre_start=2659538782 pre_end=2691204657
      calibrate_delay_direct() dropping min bogoMips estimate 1 = 864348
      Calibrating delay using timer specific routine.. 6333.27 BogoMIPS (lpj=31666390)
      Total of 2 processors activated (12666.53 BogoMIPS).
      ...
      
      After 70 boots I saw 2 variations <1% slip through
      
      [akpm@linux-foundation.org: coding-style fixes]
      [akpm@linux-foundation.org: fix straggly printk mess]
      Signed-off-by: default avatarAndrew Worsley <amworsley@gmail.com>
      Reviewed-by: default avatarPhil Carmody <ext-phil.2.carmody@nokia.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d2b46313
  10. Mar 23, 2011
    • Phil Carmody's avatar
      calibrate: retry with wider bounds when converge seems to fail · b1b5f65e
      Phil Carmody authored
      
      Systems with unmaskable interrupts such as SMIs may massively
      underestimate loops_per_jiffy, and fail to converge anywhere near the real
      value.  A case seen on x86_64 was an initial estimate of 256<<12, which
      converged to 511<<12 where the real value should have been over 630<<12.
      This admitedly requires bypassing the TSC calibration (lpj_fine), and a
      failure to settle in the direct calibration too, but is physically
      possible.  This failure does not depend on my previous calibration
      optimisation, but by luck is easy to fix with the optimisation in place
      with a trivial retry loop.
      
      In the context of the optimised converging method, as we can no longer
      trust the starting estimate, enlarge the search bounds exponentially so
      that the number of retries is logarithmically bounded.
      
      [akpm@linux-foundation.org: mention x86_64 SMIs in comment]
      Signed-off-by: default avatarPhil Carmody <ext-phil.2.carmody@nokia.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Tested-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b1b5f65e
    • Phil Carmody's avatar
      calibrate: home in on correct lpj value more quickly · 191e5688
      Phil Carmody authored
      
      Binary chop with a jiffy-resync on each step to find an upper bound is
      slow, so just race in a tight-ish loop to find an underestimate.
      
      If done with lots of individual steps, sometimes several hundreds of
      iterations would be required, which would impose a significant overhead,
      and make the initial estimate very low.  By taking slowly increasing steps
      there will be less overhead.
      
      E.g.  an x86_64 2.67GHz could have fitted in 613 individual small delays,
      but in reality should have been able to fit in a single delay 644 times
      longer, so underestimated by 31 steps.  To reach the equivalent of 644
      small delays with the accelerating scheme now requires about 130
      iterations, so has <1/4th of the overhead, and can therefore be expected
      to underestimate by only 7 steps.
      
      As now we have a better initial estimate we can binary chop over a smaller
      range.  With the loop overhead in the initial estimate kept low, and the
      step sizes moderate, we won't have under-estimated by much, so chose as
      tight a range as we can.
      
      Signed-off-by: default avatarPhil Carmody <ext-phil.2.carmody@nokia.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Tested-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      191e5688
    • Phil Carmody's avatar
      calibrate: extract fall-back calculation into own helper · 71c696b1
      Phil Carmody authored
      
      The motivation for this patch series is that currently our OMAP calibrates
      itself using the trial-and-error binary chop fallback that some other
      architectures no longer need to perform.  This is a lengthy process,
      taking 0.2s in an environment where boot time is of great interest.
      
      Patch 2/4 has two optimisations.  Firstly, it replaces the initial
      repeated- doubling to find the relevant power of 2 with a tight loop that
      just does as much as it can in a jiffy.  Secondly, it doesn't binary chop
      over an entire power of 2 range, it choses a much smaller range based on
      how much it squeezed in, and failed to squeeze in, during the first stage.
       Both are significant optimisations, and bring our calibration down from
      23 jiffies to 5, and, in the process, often arrive at a more accurate lpj
      value.
      
      The 'bands' and 'sub-logarithmic' growth may look over-engineered, but
      they only cost a small level of inaccuracy in the initial guess (for all
      architectures) in order to avoid the very large inaccuracies that appeared
      during testing (on x86_64 architectures, and presumably others with less
      metronomic operation).  Note that due to the existence of the TSC and
      other timers, the x86_64 will not typically use this fallback routine, but
      I wanted to code defensively, able to cope with all kinds of processor
      behaviours and kernel command line options.
      
      Patch 3/4 is an additional trap for the nightmare scenario where the
      initial estimate is very inaccurate, possibly due to things like SMIs.
      It simply retries with a larger bound.
      
      Stephen said:
      
      I tried this patch set out on an MSM7630.
      :
      : Before:
      :
      : Calibrating delay loop... 681.57 BogoMIPS (lpj=3407872)
      :
      : After:
      :
      : Calibrating delay loop... 680.75 BogoMIPS (lpj=3403776)
      :
      : But the really good news is calibration time dropped from ~247ms to ~56ms.
      :  Sadly we won't be able to benefit from this should my udelay patches make
      : it into ARM because we would be using calibrate_delay_direct() instead (at
      : least on machines who choose to).  Can we somehow reapply the logic behind
      : this to calibrate_delay_direct()?  That would be even better, but this is
      : definitely a boot time improvement.
      :
      : Or maybe we could just replace calibrate_delay_direct() with this fallback
      : calculation?  If __delay() is a thin wrapper around read_current_timer()
      : it should work just as well (plus patch 3 makes it handle SMIs).  I'll try
      : that out.
      
      This patch:
      
      ... so that it can be modified more clinically.
      
      This is almost entirely cosmetic. The only change to the operation
      is that the global variable is only set once after the estimation is
      completed, rather than taking on all the intermediate values. However,
      there are no readers of that variable, so this change is unimportant.
      
      Signed-off-by: default avatarPhil Carmody <ext-phil.2.carmody@nokia.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Tested-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      71c696b1
  11. Feb 10, 2011
  12. Nov 26, 2009
    • Mike Travis's avatar
      timers, init: Limit the number of per cpu calibration bootup messages · feae3203
      Mike Travis authored
      
      Limit the number of per cpu calibration messages by only
      printing out results for the first cpu to boot.
      
      Also, don't print "CPUx is down" as this is expected, and we
      don't need 4096 reminders... ;-)
      
      Signed-off-by: default avatarMike Travis <travis@sgi.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Roland Dreier <rdreier@cisco.com>
      Cc: Randy Dunlap <rdunlap@xenotime.net>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Greg Kroah-Hartman <gregkh@suse.de>
      Cc: Yinghai Lu <yhlu.kernel@gmail.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
      Cc: Jack Steiner <steiner@sgi.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <20091118002219.889552000@alcatraz.americas.sgi.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      feae3203
  13. Jul 28, 2008
    • Joe Perches's avatar
      x86: remove stray <6> in BogoMIPS printk · d7ba11d0
      Joe Perches authored
      
      Rabin Vincent noticed that there's a stray <6> in BogoMIPS printk:
      
      > Remove the extra KERN_INFO which causes this:
      > Calibrating delay loop... <6>179.40 BogoMIPS (lpj=897024)
      > -	printk(KERN_INFO "%lu.%02lu BogoMIPS (lpj=%lu)\n",
      > -			loops_per_jiffy/(500000/HZ),
      > -			(loops_per_jiffy/(5000/HZ)) % 100, loops_per_jiffy);
      > +	printk("%lu.%02lu BogoMIPS (lpj=%lu)\n",
      > +		loops_per_jiffy/(500000/HZ),
      > +		(loops_per_jiffy/(5000/HZ)) % 100, loops_per_jiffy);
      >  }
      
      How about just using KERN_CONT and leaving the whitespace
      for a patch that does the entire file?
      
      Reported-by: default avatarRabin Vincent <rabin@rab.in>
      d7ba11d0
  14. Jun 24, 2008
    • Alok Kataria's avatar
      x86: use cpu_khz for loops_per_jiffy calculation, cleanup · f3f3149f
      Alok Kataria authored
      
      As suggested by Ingo, remove all references to tsc from init/calibrate.c
      
      TSC is x86 specific, and using tsc in variable names in a generic file should
      be avoided. lpj_tsc is now called lpj_fine, since it is related to fine tuning
      of lpj value. Also tsc_rate_*  is called timer_rate_*
      
      Signed-off-by: default avatarAlok N Kataria <akataria@vmware.com>
      Cc: Arjan van de Ven <arjan@infradead.org>
      Cc: Daniel Hecht <dhecht@vmware.com>
      Cc: Tim Mann <mann@vmware.com>
      Cc: Zach Amsden <zach@vmware.com>
      Cc: Sahil Rihan <srihan@vmware.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      f3f3149f
  15. Jun 23, 2008
    • Alok Kataria's avatar
      x86: use cpu_khz for loops_per_jiffy calculation · 3da757da
      Alok Kataria authored
      
      On the x86 platform we can use the value of tsc_khz computed during tsc
      calibration to calculate the loops_per_jiffy value. Its very important
      to keep the error in lpj values to minimum as any error in that may
      result in kernel panic in check_timer. In virtualization environment, On
      a highly overloaded host the guest delay calibration may sometimes
      result in errors beyond the ~50% that timer_irq_works can handle,
      resulting in the guest panicking.
      
      Does some formating changes to lpj_setup code to now have a single
      printk to print the bogomips value.
      
      We do this only for the boot processor because the AP's can have
      different base frequencies or the BIOS might boot a AP at a different
      frequency.
      
      Signed-off-by: default avatarAlok N Kataria <akataria@vmware.com>
      Cc: Arjan van de Ven <arjan@infradead.org>
      Cc: Daniel Hecht <dhecht@vmware.com>
      Cc: Tim Mann <mann@vmware.com>
      Cc: Zach Amsden <zach@vmware.com>
      Cc: Sahil Rihan <srihan@vmware.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      3da757da
  16. Feb 06, 2008
    • Adrian Bunk's avatar
      calibrate_delay() must be __cpuinit · 6c81c32f
      Adrian Bunk authored
      
      calibrate_delay() must be __cpuinit, not __{dev,}init.
      
      I've verified that this is correct for all users.
      
      While doing the latter, I also did the following cleanups:
      - remove pointless additional prototypes in C files
      - ensure all users #include <linux/delay.h>
      
      This fixes the following section mismatches with CONFIG_HOTPLUG=n,
      CONFIG_HOTPLUG_CPU=y:
      
      WARNING: vmlinux.o(.text+0x1128d): Section mismatch: reference to .init.text.1:calibrate_delay (between 'check_cx686_slop' and 'set_cx86_reorder')
      WARNING: vmlinux.o(.text+0x25102): Section mismatch: reference to .init.text.1:calibrate_delay (between 'smp_callin' and 'cpu_coregroup_map')
      
      Signed-off-by: default avatarAdrian Bunk <bunk@kernel.org>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Christian Zankel <chris@zankel.net>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6c81c32f
    • Andrew Morton's avatar
      read_current_timer() cleanups · 941e492b
      Andrew Morton authored
      
      - All implementations can be __devinit
      
      - The function prototypes were in asm/timex.h but they all must be the same,
        so create a single declaration in linux/timex.h.
      
      - uninline the sparc64 version to match the other architectures
      
      - Don't bother #defining ARCH_HAS_READ_CURRENT_TIMER to a particular value.
      
      [ezk@cs.sunysb.edu: fix build]
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Andi Kleen <ak@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      941e492b
  17. Oct 16, 2007
  18. Feb 14, 2007
    • Tim Schmielau's avatar
      [PATCH] remove many unneeded #includes of sched.h · cd354f1a
      Tim Schmielau authored
      
      After Al Viro (finally) succeeded in removing the sched.h #include in module.h
      recently, it makes sense again to remove other superfluous sched.h includes.
      There are quite a lot of files which include it but don't actually need
      anything defined in there.  Presumably these includes were once needed for
      macros that used to live in sched.h, but moved to other header files in the
      course of cleaning it up.
      
      To ease the pain, this time I did not fiddle with any header files and only
      removed #includes from .c-files, which tend to cause less trouble.
      
      Compile tested against 2.6.20-rc2 and 2.6.20-rc2-mm2 (with offsets) on alpha,
      arm, i386, ia64, mips, powerpc, and x86_64 with allnoconfig, defconfig,
      allmodconfig, and allyesconfig as well as a few randconfigs on x86_64 and all
      configs in arch/arm/configs on arm.  I also checked that no new warnings were
      introduced by the patch (actually, some warnings are removed that were emitted
      by unnecessarily included header files).
      
      Signed-off-by: default avatarTim Schmielau <tim@physik3.uni-rostock.de>
      Acked-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      cd354f1a
  19. Jun 23, 2005
    • Venkatesh Pallipadi's avatar
      [PATCH] Platform SMIs and their interferance with tsc based delay calibration · 8a9e1b0f
      Venkatesh Pallipadi authored
      
      Issue:
      Current tsc based delay_calibration can result in significant errors in
      loops_per_jiffy count when the platform events like SMIs
      (System Management Interrupts that are non-maskable) are present. This could
      lead to potential kernel panic(). This issue is becoming more visible with 2.6
      kernel (as default HZ is 1000) and on platforms with higher SMI handling
      latencies. During the boot time, SMIs are mostly used by BIOS (for things
      like legacy keyboard emulation).
      
      Description:
      The psuedocode for current delay calibration with tsc based delay looks like
      (0) Estimate a value for loops_per_jiffy
      (1) While (loops_per_jiffy estimate is accurate enough)
      (2)   wait for jiffy transition (jiffy1)
      (3)   Note down current tsc (tsc1)
      (4)   loop until tsc becomes tsc1 + loops_per_jiffy
      (5)   check whether jiffy changed since jiffy1 or not and refine
      loops_per_jiffy estimate
      
      Consider the following cases
      Case 1:
      If SMIs happen between (2) and (3) above, we can end up with a
      loops_per_jiffy value that is too low. This results in shorted delays and
      kernel can panic () during boot (Mostly at IOAPIC timer initialization
      timer_irq_works() as we don't have enough timer interrupts in a specified
      interval).
      
      Case 2:
      If SMIs happen between (3) and (4) above, then we can end up with a
      loops_per_jiffy value that is too high. And with current i386 code, too
      high lpj value (greater than 17M) can result in a overflow in
      delay.c:__const_udelay() again resulting in shorter delay and panic().
      
      Solution:
      The patch below makes the calibration routine aware of asynchronous events
      like SMIs. We increase the delay calibration time and also identify any
      significant errors (greater than 12.5%) in the calibration and notify it to
      user.
      
      Patch below changes both i386 and x86-64 architectures to use this
      new and improved calibrate_delay_direct() routine.
      
      Signed-off-by: default avatarVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      8a9e1b0f
  20. Apr 16, 2005
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4
Loading