aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorAlex Shi <alex.shi@linaro.org>2013-12-22 11:12:04 +0800
committerAlex Shi <alex.shi@linaro.org>2013-12-22 11:12:04 +0800
commit3c6556b1a9c2f9c91aacbc57bac938691fedda81 (patch)
treeec95f19f5ed70514a148720429c7926a52a366c5 /kernel
parentb8420132aa326738c0139b85a65f9fc12764570d (diff)
parent095f493c4d532b0ced3aee22e2d5b2cea02aa773 (diff)
downloadlinaro-lsk-3c6556b1a9c2f9c91aacbc57bac938691fedda81.tar.gz
Merge remote-tracking branch 'stable/linux-3.10.y' into linux-linaro-lsk
Diffstat (limited to 'kernel')
-rw-r--r--kernel/futex.c2
-rw-r--r--kernel/kexec.c4
-rw-r--r--kernel/sched/debug.c8
-rw-r--r--kernel/sched/fair.c2
4 files changed, 15 insertions, 1 deletions
diff --git a/kernel/futex.c b/kernel/futex.c
index 49dacfb4574..a283b304107 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -287,7 +287,7 @@ again:
put_page(page);
/* serialize against __split_huge_page_splitting() */
local_irq_disable();
- if (likely(__get_user_pages_fast(address, 1, 1, &page) == 1)) {
+ if (likely(__get_user_pages_fast(address, 1, !ro, &page) == 1)) {
page_head = compound_head(page);
/*
* page_head is valid pointer but we must pin
diff --git a/kernel/kexec.c b/kernel/kexec.c
index 59f7b55ba74..1f8d9382dba 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -47,6 +47,9 @@ u32 vmcoreinfo_note[VMCOREINFO_NOTE_SIZE/4];
size_t vmcoreinfo_size;
size_t vmcoreinfo_max_size = sizeof(vmcoreinfo_data);
+/* Flag to indicate we are going to kexec a new kernel */
+bool kexec_in_progress = false;
+
/* Location of the reserved area for the crash kernel */
struct resource crashk_res = {
.name = "Crash kernel",
@@ -1678,6 +1681,7 @@ int kernel_kexec(void)
} else
#endif
{
+ kexec_in_progress = true;
kernel_restart_prepare(NULL);
printk(KERN_EMERG "Starting new kernel\n");
machine_shutdown();
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 6b7b86cfaba..c2665cd2959 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -227,6 +227,14 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq)
SEQ_printf(m, " .%-30s: %d\n", "tg->usage_avg",
atomic_read(&cfs_rq->tg->usage_avg));
#endif
+#ifdef CONFIG_CFS_BANDWIDTH
+ SEQ_printf(m, " .%-30s: %d\n", "tg->cfs_bandwidth.timer_active",
+ cfs_rq->tg->cfs_bandwidth.timer_active);
+ SEQ_printf(m, " .%-30s: %d\n", "throttled",
+ cfs_rq->throttled);
+ SEQ_printf(m, " .%-30s: %d\n", "throttle_count",
+ cfs_rq->throttle_count);
+#endif
print_cfs_group_stats(m, cpu, cfs_rq->tg);
#endif
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 7500a68f831..1ae8de26e9b 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -2483,6 +2483,8 @@ static void throttle_cfs_rq(struct cfs_rq *cfs_rq)
cfs_rq->throttled_clock = rq->clock;
raw_spin_lock(&cfs_b->lock);
list_add_tail_rcu(&cfs_rq->throttled_list, &cfs_b->throttled_cfs_rq);
+ if (!cfs_b->timer_active)
+ __start_cfs_bandwidth(cfs_b);
raw_spin_unlock(&cfs_b->lock);
}