#
10e69627 |
| 01-Jul-2011 |
Ingo Molnar <mingo@elte.hu> |
Merge commit 'v3.0-rc5' into perf/core
Merge reason: Pick up the latest fixes.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
#
5b944a71 |
| 30-Jun-2011 |
James Morris <jmorris@namei.org> |
Merge branch 'linus' into next
|
#
6da49a29 |
| 30-Jun-2011 |
Benjamin Herrenschmidt <benh@kernel.crashing.org> |
Merge remote branch 'origin/master' into next
|
#
8eb2c0ee |
| 29-Jun-2011 |
Keith Packard <keithp@keithp.com> |
Merge branch 'drm-intel-fixes' into drm-intel-next
|
Revision tags: v3.0-rc5 |
|
#
20733d59 |
| 24-Jun-2011 |
Paul Mundt <lethal@linux-sh.org> |
Merge branch 'fbdev/stable-updates'
|
#
74d83b7e |
| 23-Jun-2011 |
Nicholas Bellinger <nab@linux-iscsi.org> |
Merge tag 'v3.0-rc4' of /pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus
|
#
1b19ca9f |
| 22-Jun-2011 |
Russell King <rmk+kernel@arm.linux.org.uk> |
Fix CPU spinlock lockups on secondary CPU bringup
Secondary CPU bringup typically calls calibrate_delay() during its initialization. However, calibrate_delay() modifies a global variable (loops_per
Fix CPU spinlock lockups on secondary CPU bringup
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: Santosh Shilimkar <santosh.shilimkar@ti.com> Signed-off-by: Russell 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: Linus Torvalds <torvalds@linux-foundation.org>
show more ...
|
#
2cd1176b |
| 21-Jun-2011 |
Keith Packard <keithp@keithp.com> |
Merge branch 'drm-intel-fixes' into drm-intel-next
|
#
9f6ec8d6 |
| 21-Jun-2011 |
David S. Miller <davem@davemloft.net> |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/net/wireless/iwlwifi/iwl-agn-rxon.c drivers/net/wireless/rtlwifi/pci.c net/netfilter/ipvs/ip_
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/net/wireless/iwlwifi/iwl-agn-rxon.c drivers/net/wireless/rtlwifi/pci.c net/netfilter/ipvs/ip_vs_core.c
show more ...
|
Revision tags: v3.0-rc4 |
|
#
1f2d9c9d |
| 16-Jun-2011 |
Patrick McHardy <kaber@trash.net> |
Merge branch 'master' of /repos/git/net-next-2.6
|
#
d0459e1a |
| 16-Jun-2011 |
Paul Mundt <lethal@linux-sh.org> |
Merge branches 'common/dma' and 'sh/stable-updates' into sh-latest
|
#
de695e15 |
| 15-Jun-2011 |
Borislav Petkov <borislav.petkov@amd.com> |
init/calibrate.c: remove annoying printk
Remove calibrate_delay_direct()'s KERN_DEBUG printk related to bogomips calculation as it appears when booting every core on setups with 'ignore_loglevel' wh
init/calibrate.c: remove annoying printk
Remove calibrate_delay_direct()'s KERN_DEBUG printk related to bogomips calculation as it appears when booting every core on setups with 'ignore_loglevel' which dmesg people scan for possible issues. As the message doesn't show very useful information to the widest audience of kernel boot message gazers, it should be removed.
Introduced by commit d2b463135f84 ("init/calibrate.c: fix for critical bogoMIPS intermittent calculation failure").
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> Cc: Andrew Worsley <amworsley@gmail.com> Cc: Phil Carmody <ext-phil.2.carmody@nokia.com> Cc: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
show more ...
|
Revision tags: v3.0-rc3 |
|
#
5be5758c |
| 10-Jun-2011 |
Jiri Kosina <jkosina@suse.cz> |
Merge branch 'master' into for-next
Sync with Linus' tree to be able to apply patches against new code I have in queue.
|
#
a61944c2 |
| 08-Jun-2011 |
Michal Marek <mmarek@suse.cz> |
Merge commit 'v3.0-rc1' into kbuild/kconfig
|
#
2e483528 |
| 07-Jun-2011 |
Michal Marek <mmarek@suse.cz> |
Merge commit 'v3.0-rc1' into kbuild/kbuild
|
#
aa72f689 |
| 06-Jun-2011 |
Mark Brown <broonie@opensource.wolfsonmicro.com> |
Merge branch 'for-3.0' into for-3.1
|
Revision tags: v3.0-rc2 |
|
#
8181d3ef |
| 30-May-2011 |
Paul Mundt <lethal@linux-sh.org> |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into sh-fixes-for-linus
|
Revision tags: v3.0-rc1 |
|
#
6288cf1e |
| 29-May-2011 |
Len Brown <len.brown@intel.com> |
Merge branches 'acpica', 'aml-custom', 'bugzilla-16548', 'bugzilla-20242', 'd3-cold', 'ec-asus' and 'thermal-fix' into release
|
#
ea77f7a2 |
| 26-May-2011 |
Eric Paris <eparis@redhat.com> |
Merge commit 'v2.6.39' into 20110526
Conflicts: lib/flex_array.c security/selinux/avc.c security/selinux/hooks.c security/selinux/ss/policydb.c security/smack/smack_lsm.c
|
#
de66ee97 |
| 26-May-2011 |
Ingo Molnar <mingo@elte.hu> |
Merge branch 'linus' into x86/urgent
Merge reason: we want to queue up a dependent patch.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
#
1102c660 |
| 26-May-2011 |
Ingo Molnar <mingo@elte.hu> |
Merge branch 'linus' into perf/urgent
Merge reason: Linus applied an overlapping commit:
5f2e8e2b0bf0: kernel/watchdog.c: Use proper ANSI C prototypes
So merge it in to make sure we can iterate
Merge branch 'linus' into perf/urgent
Merge reason: Linus applied an overlapping commit:
5f2e8e2b0bf0: kernel/watchdog.c: Use proper ANSI C prototypes
So merge it in to make sure we can iterate the file without conflicts.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
show more ...
|
#
d2b46313 |
| 24-May-2011 |
Andrew Worsley <amworsley@gmail.com> |
init/calibrate.c: fix for critical bogoMIPS intermittent calculation failure
A fix to the TSC (Time Stamp Counter) based bogoMIPS calculation used on secondary CPUs which has two faults:
1: Not han
init/calibrate.c: fix for critical bogoMIPS intermittent calculation failure
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 feae3203d711db0a ("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: Andrew Worsley <amworsley@gmail.com> Reviewed-by: Phil Carmody <ext-phil.2.carmody@nokia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
show more ...
|
#
b73077eb |
| 24-May-2011 |
Dmitry Torokhov <dmitry.torokhov@gmail.com> |
Merge branch 'next' into for-linus
|
#
366a2382 |
| 23-May-2011 |
Jiri Kosina <jkosina@suse.cz> |
Merge branches 'doc', 'multitouch', 'upstream' and 'upstream-fixes' into for-linus
|
Revision tags: v2.6.39 |
|
#
6b7b8e48 |
| 18-May-2011 |
Jiri Kosina <jkosina@suse.cz> |
Merge branch 'master' into upstream.
This is sync with Linus' tree to receive KEY_IMAGES definition that went in through input tree.
|