aboutsummaryrefslogtreecommitdiff
path: root/Makefile
AgeCommit message (Collapse)Author
2014-12-14Linux 3.2.65v3.2.65Ben Hutchings
2014-11-05Linux 3.2.64v3.2.64Ben Hutchings
2014-09-13Linux 3.2.63v3.2.63Ben Hutchings
2014-09-13Fix gcc-4.9.0 miscompilation of load_balance() in schedulerLinus Torvalds
commit 2062afb4f804afef61cbe62a30cac9a46e58e067 upstream. 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=61801 Reported-by: Michel Dänzer <michel@daenzer.net> Suggested-by: Markus Trippelsdorf <markus@trippelsdorf.de> Cc: Jakub Jelinek <jakub@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
2014-08-06Linux 3.2.62v3.2.62Ben Hutchings
2014-07-11Linux 3.2.61v3.2.61Ben Hutchings
2014-06-09Linux 3.2.60v3.2.60Ben Hutchings
2014-05-18Linux 3.2.59v3.2.59Ben Hutchings
2014-04-30Linux 3.2.58v3.2.58Ben Hutchings
2014-04-09Linux 3.2.57v3.2.57Ben Hutchings
2014-04-02Linux 3.2.56v3.2.56Ben Hutchings
2014-02-15Linux 3.2.55v3.2.55Ben Hutchings
2014-01-03Linux 3.2.54v3.2.54Ben Hutchings
2013-11-28Linux 3.2.53v3.2.53Ben Hutchings
2013-10-26Linux 3.2.52v3.2.52Ben Hutchings
2013-09-10Linux 3.2.51v3.2.51Ben Hutchings
2013-08-02Linux 3.2.50v3.2.50Ben Hutchings
2013-07-27Linux 3.2.49v3.2.49Ben Hutchings
2013-06-29Linux 3.2.48v3.2.48Ben Hutchings
2013-06-19Linux 3.2.47v3.2.47Ben Hutchings
2013-05-30Linux 3.2.46v3.2.46Ben Hutchings
2013-05-13Linux 3.2.45v3.2.45Ben Hutchings
2013-04-25Linux 3.2.44v3.2.44Ben Hutchings
2013-04-10Linux 3.2.43v3.2.43Ben Hutchings
2013-03-27Linux 3.2.42v3.2.42Ben Hutchings
2013-03-20Linux 3.2.41v3.2.41Ben Hutchings
2013-03-06Linux 3.2.40v3.2.40Ben Hutchings
2013-02-20Linux 3.2.39v3.2.39Ben Hutchings
2013-02-06Linux 3.2.38v3.2.38Ben Hutchings
2013-01-16Linux 3.2.37v3.2.37Ben Hutchings
2013-01-03Linux 3.2.36v3.2.36Ben Hutchings
2012-12-06Linux 3.2.35v3.2.35Ben Hutchings
2012-11-16Linux 3.2.34v3.2.34Ben Hutchings
2012-10-30Linux 3.2.33v3.2.33Ben Hutchings
2012-10-17Linux 3.2.32v3.2.32Ben Hutchings
2012-10-10Linux 3.2.31v3.2.31Ben Hutchings
2012-09-19Linux 3.2.30v3.2.30Ben Hutchings
2012-09-12Linux 3.2.29v3.2.29Ben Hutchings
2012-08-19Linux 3.2.28v3.2.28Ben Hutchings
2012-08-10Linux 3.2.27v3.2.27Ben Hutchings
2012-08-04Linux 3.2.26v3.2.26Ben Hutchings
2012-08-02Linux 3.2.25v3.2.25Ben Hutchings
2012-07-25Linux 3.2.24v3.2.24Ben Hutchings
2012-07-12Linux 3.2.23v3.2.23Ben Hutchings
2012-07-04Linux 3.2.22v3.2.22Ben Hutchings
2012-06-19Linux 3.2.21v3.2.21Ben Hutchings
2012-06-10Linux 3.2.20v3.2.20Ben Hutchings
2012-05-31Linux 3.2.19v3.2.19Ben Hutchings
2012-05-31x86, realmode: 16-bit real-mode code support for relocs toolH. Peter Anvin
commit 6520fe5564acf07ade7b18a1272db1184835c487 upstream. A new option is added to the relocs tool called '--realmode'. This option causes the generation of 16-bit segment relocations and 32-bit linear relocations for the real-mode code. When the real-mode code is moved to the low-memory during kernel initialization, these relocation entries can be used to relocate the code properly. In the assembly code 16-bit segment relocations must be relative to the 'real_mode_seg' absolute symbol. Linear relocations must be relative to a symbol prefixed with 'pa_'. 16-bit segment relocation is used to load cs:ip in 16-bit code. Linear relocations are used in the 32-bit code for relocatable data references. They are declared in the linker script of the real-mode code. The relocs tool is moved to arch/x86/tools/relocs.c, and added new target archscripts that can be used to build scripts needed building an architecture. be compiled before building the arch/x86 tree. [ hpa: accelerating this because it detects invalid absolute relocations, a serious bug in binutils 2.22.52.0.x which currently produces bad kernels. ] Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> Link: http://lkml.kernel.org/r/1336501366-28617-2-git-send-email-jarkko.sakkinen@intel.com Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> Cc: <stable@vger.kernel.org> [bwh: Backported to 3.2: - Adjust context (no archheaders; no insn_sanity) - Expand put_unaligned_le32()] Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
2012-05-20Linux 3.2.18v3.2.18Ben Hutchings