* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86-32, fpu: Fix FPU exception handling on non-SSE systems x86, hibernate: Initialize mmu_cr4_features during boot x86-32, NUMA: Fix ACPI NUMA init broken by recent x86-64 change x86: visws: Fixup irq overhaul fallout * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: sched: Clean up rebalance_domains() load-balance interval calculation * 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86/mrst/vrtc: Fix boot crash in mrst_rtc_init() rtc, x86/mrst/vrtc: Fix boot crash in rtc_read_alarm() * 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: genirq: Fix cpumask leak in __setup_irq() * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: perf probe: Fix listing incorrect line number with inline function perf probe: Fix to find recursively inlined function perf probe: Fix multiple --vars options behavior perf probe: Fix to remove redundant close perf probe: Fix to ensure function declared file
8b9686f6 parents df9b29d f994d99 49c022e 09552b2 4f5058c f64fac811 files · +151 −89Browse filesShowing the changes to kernel (3 of 11 files). Show all
Unified · Split
| @@ -1051,6 +1051,7 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new) · 1050 unmodified lines | ||
| 1051 | 1051 | register_irq_proc(irq, desc); |
| 1052 | 1052 | new->dir = NULL; |
| 1053 | 1053 | register_handler_proc(irq, new); |
| 1054 | + free_cpumask_var(mask); | |
| 1054 | 1055 | |
| 1055 | 1056 | return 0; |
| 1056 | 1057 | |
| @@ -6331,6 +6331,9 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu) · 6330 unmodified lines | ||
| 6331 | 6331 | break; |
| 6332 | 6332 | #endif |
| 6333 | 6333 | } |
| 6334 | + | |
| 6335 | + update_max_interval(); | |
| 6336 | + | |
| 6334 | 6337 | return NOTIFY_OK; |
| 6335 | 6338 | } |
| 6336 | 6339 | |
| @@ -3820,6 +3820,17 @@ void select_nohz_load_balancer(int stop_tick) · 3819 unmodified lines | ||
| 3820 | 3820 | |
| 3821 | 3821 | static DEFINE_SPINLOCK(balancing); |
| 3822 | 3822 | |
| 3823 | +static unsigned long __read_mostly max_load_balance_interval = HZ/10; | |
| 3824 | + | |
| 3825 | +/* | |
| 3826 | + * Scale the max load_balance interval with the number of CPUs in the system. | |
| 3827 | + * This trades load-balance latency on larger machines for less cross talk. | |
| 3828 | + */ | |
| 3829 | +static void update_max_interval(void) | |
| 3830 | +{ | |
| 3831 | + max_load_balance_interval = HZ*num_online_cpus()/10; | |
| 3832 | +} | |
| 3833 | + | |
| 3823 | 3834 | /* |
| 3824 | 3835 | * It checks each scheduling domain to see if it is due to be balanced, |
| 3825 | 3836 | * and initiates a balancing operation if so. |
| @@ -3849,10 +3860,7 @@ static void rebalance_domains(int cpu, enum cpu_idle_type idle) · 23 unmodified lines | ||
| 3849 | 3860 | |
| 3850 | 3861 | /* scale ms to jiffies */ |
| 3851 | 3862 | interval = msecs_to_jiffies(interval); |
| 3852 | − if (unlikely(!interval)) | |
| 3853 | − interval = 1; | |
| 3854 | − if (interval > HZ*num_online_cpus()/10) | |
| 3855 | − interval = HZ*num_online_cpus()/10; | |
| 3863 | + interval = clamp(interval, 1UL, max_load_balance_interval); | |
| 3856 | 3864 | |
| 3857 | 3865 | need_serialize = sd->flags & SD_SERIALIZE; |
| 3858 | 3866 | |