1. 04 8月, 2014 1 次提交
  2. 28 7月, 2014 1 次提交
  3. 27 7月, 2014 1 次提交
    • L
      Fix gcc-4.9.0 miscompilation of load_balance() in scheduler · 2062afb4
      Linus Torvalds 提交于
      Michel Dänzer and a couple of other people reported inexplicable random
      oopses in the scheduler, and the cause turns out to be gcc mis-compiling
      the load_balance() function when debugging is enabled.  The gcc bug
      apparently goes back to gcc-4.5, but slight optimization changes means
      that it now showed up as a problem in 4.9.0 and 4.9.1.
      
      The instruction scheduling problem causes gcc to schedule a spill
      operation to before the stack frame has been created, which in turn can
      corrupt the spilled value if an interrupt comes in.  There may be other
      effects of this bug too, but that's the code generation problem seen in
      Michel's case.
      
      This is fixed in current gcc HEAD, but the workaround as suggested by
      Markus Trippelsdorf is pretty simple: use -fno-var-tracking-assignments
      when compiling the kernel, which disables the gcc code that causes the
      problem.  This can result in slightly worse debug information for
      variable accesses, but that is infinitely preferable to actual code
      generation problems.
      
      Doing this unconditionally (not just for CONFIG_DEBUG_INFO) also allows
      non-debug builds to verify that the debug build would be identical: we
      can do
      
          export GCC_COMPARE_DEBUG=1
      
      to make gcc internally verify that the result of the build is
      independent of the "-g" flag (it will make the compiler build everything
      twice, toggling the debug flag, and compare the results).
      
      Without the "-fno-var-tracking-assignments" option, the build would fail
      (even with 4.8.3 that didn't show the actual stack frame bug) with a gcc
      compare failure.
      
      See also gcc bugzilla:
      
        https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61801Reported-by: NMichel Dänzer <michel@daenzer.net>
      Suggested-by: NMarkus Trippelsdorf <markus@trippelsdorf.de>
      Cc: Jakub Jelinek <jakub@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      2062afb4
  4. 21 7月, 2014 1 次提交
  5. 14 7月, 2014 1 次提交
  6. 07 7月, 2014 1 次提交
  7. 05 7月, 2014 1 次提交
    • M
      kbuild: Fix packaging targets with relative $(srctree) · c79624c1
      Michal Marek 提交于
      All other users of Makefile.build set $(obj) to the name of the
      subdirectory to build. Do the same for the packaging targets, otherwise
      the build fails if $(srctree) is a relative directory:
      
          $ make O=build tar-pkg
          make[1]: Entering directory `/home/mmarek/linux-2.6/build'
            CHK     include/config/kernel.release
          ../scripts/Makefile.build:44: ../../scripts/package/Makefile: No such file or directory
          make[2]: *** No rule to make target `../../scripts/package/Makefile'.  Stop.
      
      Fixes: 9da0763b ("kbuild: Use relative path when building in a subdir of the source tree")
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      c79624c1
  8. 04 7月, 2014 1 次提交
  9. 03 7月, 2014 1 次提交
  10. 30 6月, 2014 1 次提交
  11. 22 6月, 2014 1 次提交
  12. 16 6月, 2014 1 次提交
  13. 10 6月, 2014 3 次提交
  14. 09 6月, 2014 1 次提交
  15. 08 6月, 2014 1 次提交
  16. 02 6月, 2014 1 次提交
  17. 26 5月, 2014 1 次提交
  18. 22 5月, 2014 1 次提交
  19. 15 5月, 2014 3 次提交
  20. 10 5月, 2014 1 次提交
  21. 05 5月, 2014 1 次提交
  22. 30 4月, 2014 3 次提交
  23. 28 4月, 2014 1 次提交
  24. 21 4月, 2014 1 次提交
  25. 17 4月, 2014 1 次提交
  26. 14 4月, 2014 1 次提交
  27. 10 4月, 2014 1 次提交
  28. 08 4月, 2014 1 次提交
    • J
      scripts: objdiff: detect object code changes between two commits · 79192ca8
      Jason Cooper 提交于
      objdiff is useful when doing large code cleanups.  For example, when
      removing checkpatch warnings and errors from new drivers in the staging
      tree.
      
      objdiff can be used in conjunction with a git rebase to confirm that
      each commit made no changes to the resulting object code.  It has the
      same return values as diff(1).
      
      This was written specifically to support adding the skein and threefish
      cryto drivers to the staging tree.  I needed a programmatic way to
      confirm that commits changing >90% of the lines didn't inadvertently
      change the code.
      
      Temporary files (objdump output) are stored in
      
        /path/to/linux/.tmp_objdiff
      
      'make mrproper' will remove this directory.
      Signed-off-by: NJason Cooper <jason@lakedaemon.net>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      79192ca8
  29. 01 4月, 2014 2 次提交
  30. 31 3月, 2014 1 次提交
  31. 30 3月, 2014 1 次提交
    • P
      kbuild: unconditionally clobber include/linux/version.h on distclean · 9c8cdb71
      Paul Gortmaker 提交于
      As of v3.7, the UAPI changes relocated headers around such that the
      kernel version header lived in a new place.
      
      If a person is bisecting and if you go back to pre-UAPI days,
      you will create an include/linux/version.h  -- then if you checkout a
      post-UAPI kernel, and even run "make distclean" it still won't delete
      that old version file.  So you get a situation like this:
      
      $ grep -R LINUX_VERSION_CODE include/
      include/generated/uapi/linux/version.h:#define LINUX_VERSION_CODE 200192
      include/linux/version.h:#define LINUX_VERSION_CODE 132646
      
      The value in that second line is representative of a v2.6.38 version.
      And it will be sourced/used, hence leading to strange behaviours, such
      as drivers/staging content (which typically hasn't been purged of version
      ifdefs) failing to build.
      
      Since it is a subtle mode of failure, lets always clobber the old
      file when doing a distclean.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      Acked-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      9c8cdb71
  32. 25 3月, 2014 1 次提交
  33. 17 3月, 2014 1 次提交