[kernel] r18168 - in dists/sid/linux-2.6/debian: . patches/features/all/rt patches/series
Uwe Kleine-König
ukleinek-guest at alioth.debian.org
Tue Oct 18 08:51:29 UTC 2011
Author: ukleinek-guest
Date: Tue Oct 18 08:51:28 2011
New Revision: 18168
Log:
[amd64] Update rt featureset to 3.0.6-rt18
Added:
dists/sid/linux-2.6/debian/patches/features/all/rt/patch-3.0.6-rt18.patch
- copied, changed from r18167, dists/sid/linux-2.6/debian/patches/features/all/rt/patch-3.0.6-rt17.patch
Deleted:
dists/sid/linux-2.6/debian/patches/features/all/rt/patch-3.0.6-rt17.patch
Modified:
dists/sid/linux-2.6/debian/changelog
dists/sid/linux-2.6/debian/patches/series/6-extra
Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog Tue Oct 18 08:42:31 2011 (r18167)
+++ dists/sid/linux-2.6/debian/changelog Tue Oct 18 08:51:28 2011 (r18168)
@@ -1,7 +1,7 @@
linux-2.6 (3.0.0-6) UNRELEASED; urgency=low
[ Uwe Kleine-König ]
- * [amd64] Update rt featureset to 3.0.6-rt17
+ * [amd64] Update rt featureset to 3.0.6-rt18
[ Bastian Blank ]
* Add stable release 3.0.7:
Copied and modified: dists/sid/linux-2.6/debian/patches/features/all/rt/patch-3.0.6-rt18.patch (from r18167, dists/sid/linux-2.6/debian/patches/features/all/rt/patch-3.0.6-rt17.patch)
==============================================================================
--- dists/sid/linux-2.6/debian/patches/features/all/rt/patch-3.0.6-rt17.patch Tue Oct 18 08:42:31 2011 (r18167, copy source)
+++ dists/sid/linux-2.6/debian/patches/features/all/rt/patch-3.0.6-rt18.patch Tue Oct 18 08:51:28 2011 (r18168)
@@ -619,7 +619,7 @@
}
static void check_irq_on(void)
-@@ -2476,13 +2595,12 @@ static void drain_array(struct kmem_cach
+@@ -2476,26 +2595,43 @@ static void drain_array(struct kmem_cach
struct array_cache *ac,
int force, int node);
@@ -632,10 +632,11 @@
+ int node = cpu_to_mem(cpu);
- check_irq_off();
- ac = cpu_cache_get(cachep);
+- ac = cpu_cache_get(cachep);
++ ac = cpu_cache_get_on_cpu(cachep, cpu);
spin_lock(&cachep->nodelists[node]->list_lock);
free_block(cachep, ac->entry, ac->avail, node);
-@@ -2490,12 +2608,30 @@ static void do_drain(void *arg)
+ spin_unlock(&cachep->nodelists[node]->list_lock);
ac->avail = 0;
}
@@ -1298,7 +1299,96 @@
}
/*
-@@ -2857,7 +2880,7 @@ ftrace_set_regex(struct ftrace_ops *ops,
+@@ -1744,10 +1767,36 @@ static cycle_t ftrace_update_time;
+ static unsigned long ftrace_update_cnt;
+ unsigned long ftrace_update_tot_cnt;
+
++static int ops_traces_mod(struct ftrace_ops *ops)
++{
++ struct ftrace_hash *hash;
++
++ hash = ops->filter_hash;
++ return !!(!hash || !hash->count);
++}
++
+ static int ftrace_update_code(struct module *mod)
+ {
+ struct dyn_ftrace *p;
+ cycle_t start, stop;
++ unsigned long ref = 0;
++
++ /*
++ * When adding a module, we need to check if tracers are
++ * currently enabled and if they are set to trace all functions.
++ * If they are, we need to enable the module functions as well
++ * as update the reference counts for those function records.
++ */
++ if (mod) {
++ struct ftrace_ops *ops;
++
++ for (ops = ftrace_ops_list;
++ ops != &ftrace_list_end; ops = ops->next) {
++ if (ops->flags & FTRACE_OPS_FL_ENABLED &&
++ ops_traces_mod(ops))
++ ref++;
++ }
++ }
+
+ start = ftrace_now(raw_smp_processor_id());
+ ftrace_update_cnt = 0;
+@@ -1760,7 +1809,7 @@ static int ftrace_update_code(struct mod
+
+ p = ftrace_new_addrs;
+ ftrace_new_addrs = p->newlist;
+- p->flags = 0L;
++ p->flags = ref;
+
+ /*
+ * Do the initial record conversion from mcount jump
+@@ -1783,7 +1832,7 @@ static int ftrace_update_code(struct mod
+ * conversion puts the module to the correct state, thus
+ * passing the ftrace_make_call check.
+ */
+- if (ftrace_start_up) {
++ if (ftrace_start_up && ref) {
+ int failed = __ftrace_replace_code(p, 1);
+ if (failed) {
+ ftrace_bug(failed, p->ip);
+@@ -2407,10 +2456,9 @@ ftrace_match_module_records(struct ftrac
+ */
+
+ static int
+-ftrace_mod_callback(char *func, char *cmd, char *param, int enable)
++ftrace_mod_callback(struct ftrace_hash *hash,
++ char *func, char *cmd, char *param, int enable)
+ {
+- struct ftrace_ops *ops = &global_ops;
+- struct ftrace_hash *hash;
+ char *mod;
+ int ret = -EINVAL;
+
+@@ -2430,11 +2478,6 @@ ftrace_mod_callback(char *func, char *cm
+ if (!strlen(mod))
+ return ret;
+
+- if (enable)
+- hash = ops->filter_hash;
+- else
+- hash = ops->notrace_hash;
+-
+ ret = ftrace_match_module_records(hash, func, mod);
+ if (!ret)
+ ret = -EINVAL;
+@@ -2760,7 +2803,7 @@ static int ftrace_process_regex(struct f
+ mutex_lock(&ftrace_cmd_mutex);
+ list_for_each_entry(p, &ftrace_commands, list) {
+ if (strcmp(p->name, command) == 0) {
+- ret = p->func(func, command, next, enable);
++ ret = p->func(hash, func, command, next, enable);
+ goto out_unlock;
+ }
+ }
+@@ -2857,7 +2900,7 @@ ftrace_set_regex(struct ftrace_ops *ops,
ftrace_match_records(hash, buf, len);
mutex_lock(&ftrace_lock);
@@ -1307,7 +1397,7 @@
mutex_unlock(&ftrace_lock);
mutex_unlock(&ftrace_regex_lock);
-@@ -3040,18 +3063,12 @@ ftrace_regex_release(struct inode *inode
+@@ -3040,18 +3083,12 @@ ftrace_regex_release(struct inode *inode
orig_hash = &iter->ops->notrace_hash;
mutex_lock(&ftrace_lock);
@@ -1332,6 +1422,34 @@
mutex_unlock(&ftrace_lock);
}
free_ftrace_hash(iter->hash);
+Index: linux-2.6/include/linux/ftrace.h
+===================================================================
+--- linux-2.6.orig/include/linux/ftrace.h
++++ linux-2.6/include/linux/ftrace.h
+@@ -123,7 +123,8 @@ stack_trace_sysctl(struct ctl_table *tab
+ struct ftrace_func_command {
+ struct list_head list;
+ char *name;
+- int (*func)(char *func, char *cmd,
++ int (*func)(struct ftrace_hash *hash,
++ char *func, char *cmd,
+ char *params, int enable);
+ };
+
+Index: linux-2.6/kernel/trace/trace_functions.c
+===================================================================
+--- linux-2.6.orig/kernel/trace/trace_functions.c
++++ linux-2.6/kernel/trace/trace_functions.c
+@@ -324,7 +324,8 @@ ftrace_trace_onoff_unreg(char *glob, cha
+ }
+
+ static int
+-ftrace_trace_onoff_callback(char *glob, char *cmd, char *param, int enable)
++ftrace_trace_onoff_callback(struct ftrace_hash *hash,
++ char *glob, char *cmd, char *param, int enable)
+ {
+ struct ftrace_probe_ops *ops;
+ void *count = (void *)-1;
Index: linux-2.6/drivers/gpu/drm/drm_irq.c
===================================================================
--- linux-2.6.orig/drivers/gpu/drm/drm_irq.c
@@ -1411,13 +1529,14 @@
#include <linux/cpu.h>
#include <linux/pm.h>
#include <linux/io.h>
-@@ -566,6 +567,29 @@ static void init_one_hpet_msi_clockevent
+@@ -566,6 +567,30 @@ static void init_one_hpet_msi_clockevent
#define RESERVE_TIMERS 0
#endif
+static int __init dmi_disable_hpet_msi(const struct dmi_system_id *d)
+{
+ hpet_msi_disable = 1;
++ return 0;
+}
+
+static struct dmi_system_id __initdata dmi_hpet_table[] = {
@@ -1441,7 +1560,7 @@
static void hpet_msi_capability_lookup(unsigned int start_timer)
{
unsigned int id;
-@@ -573,6 +597,8 @@ static void hpet_msi_capability_lookup(u
+@@ -573,6 +598,8 @@ static void hpet_msi_capability_lookup(u
unsigned int num_timers_used = 0;
int i;
@@ -10358,48 +10477,6 @@
help
The address space of ARM processors is only 4 Gigabytes large
and it has to accommodate user address space, kernel address
-Index: linux-2.6/arch/arm/plat-versatile/platsmp.c
-===================================================================
---- linux-2.6.orig/arch/arm/plat-versatile/platsmp.c
-+++ linux-2.6/arch/arm/plat-versatile/platsmp.c
-@@ -37,7 +37,7 @@ static void __cpuinit write_pen_release(
- outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1));
- }
-
--static DEFINE_SPINLOCK(boot_lock);
-+static DEFINE_RAW_SPINLOCK(boot_lock);
-
- void __cpuinit platform_secondary_init(unsigned int cpu)
- {
-@@ -57,8 +57,8 @@ void __cpuinit platform_secondary_init(u
- /*
- * Synchronise with the boot thread.
- */
-- spin_lock(&boot_lock);
-- spin_unlock(&boot_lock);
-+ raw_spin_lock(&boot_lock);
-+ raw_spin_unlock(&boot_lock);
- }
-
- int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
-@@ -69,7 +69,7 @@ int __cpuinit boot_secondary(unsigned in
- * Set synchronisation state between this boot processor
- * and the secondary one
- */
-- spin_lock(&boot_lock);
-+ raw_spin_lock(&boot_lock);
-
- /*
- * This is really belt and braces; we hold unintended secondary
-@@ -99,7 +99,7 @@ int __cpuinit boot_secondary(unsigned in
- * now the secondary core is starting up let it run its
- * calibrations, then wait for it to finish
- */
-- spin_unlock(&boot_lock);
-+ raw_spin_unlock(&boot_lock);
-
- return pen_release != -1 ? -ENOSYS : 0;
- }
Index: linux-2.6/arch/arm/mach-exynos4/platsmp.c
===================================================================
--- linux-2.6.orig/arch/arm/mach-exynos4/platsmp.c
@@ -10610,6 +10687,48 @@
return pen_release != -1 ? -ENOSYS : 0;
}
+Index: linux-2.6/arch/arm/plat-versatile/platsmp.c
+===================================================================
+--- linux-2.6.orig/arch/arm/plat-versatile/platsmp.c
++++ linux-2.6/arch/arm/plat-versatile/platsmp.c
+@@ -37,7 +37,7 @@ static void __cpuinit write_pen_release(
+ outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1));
+ }
+
+-static DEFINE_SPINLOCK(boot_lock);
++static DEFINE_RAW_SPINLOCK(boot_lock);
+
+ void __cpuinit platform_secondary_init(unsigned int cpu)
+ {
+@@ -57,8 +57,8 @@ void __cpuinit platform_secondary_init(u
+ /*
+ * Synchronise with the boot thread.
+ */
+- spin_lock(&boot_lock);
+- spin_unlock(&boot_lock);
++ raw_spin_lock(&boot_lock);
++ raw_spin_unlock(&boot_lock);
+ }
+
+ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
+@@ -69,7 +69,7 @@ int __cpuinit boot_secondary(unsigned in
+ * Set synchronisation state between this boot processor
+ * and the secondary one
+ */
+- spin_lock(&boot_lock);
++ raw_spin_lock(&boot_lock);
+
+ /*
+ * This is really belt and braces; we hold unintended secondary
+@@ -99,7 +99,7 @@ int __cpuinit boot_secondary(unsigned in
+ * now the secondary core is starting up let it run its
+ * calibrations, then wait for it to finish
+ */
+- spin_unlock(&boot_lock);
++ raw_spin_unlock(&boot_lock);
+
+ return pen_release != -1 ? -ENOSYS : 0;
+ }
Index: linux-2.6/arch/arm/kernel/process.c
===================================================================
--- linux-2.6.orig/arch/arm/kernel/process.c
@@ -16777,7 +16896,7 @@
if (&timer->node == timerqueue_getnext(&base->active)) {
#ifdef CONFIG_HIGH_RES_TIMERS
/* Reprogram the clock event device. if enabled */
-@@ -983,8 +1031,19 @@ int __hrtimer_start_range_ns(struct hrti
+@@ -983,8 +1031,20 @@ int __hrtimer_start_range_ns(struct hrti
*
* XXX send_remote_softirq() ?
*/
@@ -16792,6 +16911,7 @@
+ * remove it again and report a failure. This avoids
+ * stale base->first entries.
+ */
++ debug_deactivate(timer);
+ __remove_hrtimer(timer, new_base,
+ timer->state & HRTIMER_STATE_CALLBACK, 0);
+ }
@@ -16799,7 +16919,7 @@
unlock_hrtimer_base(timer, &flags);
-@@ -1070,7 +1129,7 @@ int hrtimer_cancel(struct hrtimer *timer
+@@ -1070,7 +1130,7 @@ int hrtimer_cancel(struct hrtimer *timer
if (ret >= 0)
return ret;
@@ -16808,7 +16928,7 @@
}
}
EXPORT_SYMBOL_GPL(hrtimer_cancel);
-@@ -1149,6 +1208,7 @@ static void __hrtimer_init(struct hrtime
+@@ -1149,6 +1209,7 @@ static void __hrtimer_init(struct hrtime
base = hrtimer_clockid_to_base(clock_id);
timer->base = &cpu_base->clock_base[base];
@@ -16816,7 +16936,7 @@
timerqueue_init(&timer->node);
#ifdef CONFIG_TIMER_STATS
-@@ -1232,6 +1292,122 @@ static void __run_hrtimer(struct hrtimer
+@@ -1232,6 +1293,122 @@ static void __run_hrtimer(struct hrtimer
timer->state &= ~HRTIMER_STATE_CALLBACK;
}
@@ -16939,7 +17059,7 @@
#ifdef CONFIG_HIGH_RES_TIMERS
/*
-@@ -1242,7 +1418,7 @@ void hrtimer_interrupt(struct clock_even
+@@ -1242,7 +1419,7 @@ void hrtimer_interrupt(struct clock_even
{
struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);
ktime_t expires_next, now, entry_time, delta;
@@ -16948,7 +17068,7 @@
BUG_ON(!cpu_base->hres_active);
cpu_base->nr_events++;
-@@ -1278,6 +1454,14 @@ retry:
+@@ -1278,6 +1455,14 @@ retry:
timer = container_of(node, struct hrtimer, node);
@@ -16963,7 +17083,7 @@
/*
* The immediate goal for using the softexpires is
* minimizing wakeups, not running timers at the
-@@ -1301,7 +1485,10 @@ retry:
+@@ -1301,7 +1486,10 @@ retry:
break;
}
@@ -16975,7 +17095,7 @@
}
}
-@@ -1316,6 +1503,10 @@ retry:
+@@ -1316,6 +1504,10 @@ retry:
if (expires_next.tv64 == KTIME_MAX ||
!tick_program_event(expires_next, 0)) {
cpu_base->hang_detected = 0;
@@ -16986,7 +17106,7 @@
return;
}
-@@ -1391,17 +1582,17 @@ void hrtimer_peek_ahead_timers(void)
+@@ -1391,17 +1583,17 @@ void hrtimer_peek_ahead_timers(void)
local_irq_restore(flags);
}
@@ -17009,7 +17129,7 @@
/*
* Called from timer softirq every jiffy, expire hrtimers:
*
-@@ -1434,7 +1625,7 @@ void hrtimer_run_queues(void)
+@@ -1434,7 +1626,7 @@ void hrtimer_run_queues(void)
struct timerqueue_node *node;
struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);
struct hrtimer_clock_base *base;
@@ -17018,7 +17138,7 @@
if (hrtimer_hres_active())
return;
-@@ -1459,10 +1650,16 @@ void hrtimer_run_queues(void)
+@@ -1459,10 +1651,16 @@ void hrtimer_run_queues(void)
hrtimer_get_expires_tv64(timer))
break;
@@ -17036,7 +17156,7 @@
}
/*
-@@ -1484,6 +1681,7 @@ static enum hrtimer_restart hrtimer_wake
+@@ -1484,6 +1682,7 @@ static enum hrtimer_restart hrtimer_wake
void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, struct task_struct *task)
{
sl->timer.function = hrtimer_wakeup;
@@ -17044,7 +17164,7 @@
sl->task = task;
}
EXPORT_SYMBOL_GPL(hrtimer_init_sleeper);
-@@ -1622,9 +1820,13 @@ static void __cpuinit init_hrtimers_cpu(
+@@ -1622,9 +1821,13 @@ static void __cpuinit init_hrtimers_cpu(
for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) {
cpu_base->clock_base[i].cpu_base = cpu_base;
timerqueue_init_head(&cpu_base->clock_base[i].active);
@@ -17058,7 +17178,7 @@
}
#ifdef CONFIG_HOTPLUG_CPU
-@@ -1737,9 +1939,7 @@ void __init hrtimers_init(void)
+@@ -1737,9 +1940,7 @@ void __init hrtimers_init(void)
hrtimer_cpu_notify(&hrtimers_nb, (unsigned long)CPU_UP_PREPARE,
(void *)(long)smp_processor_id());
register_cpu_notifier(&hrtimers_nb);
@@ -23124,7 +23244,7 @@
+# define softirq_count() (preempt_count() & SOFTIRQ_MASK)
+# define in_serving_softirq() (softirq_count() & SOFTIRQ_OFFSET)
+#else
-+# define softirq_count() (0U)
++# define softirq_count() (0UL)
+extern int in_serving_softirq(void);
+#endif
+
Modified: dists/sid/linux-2.6/debian/patches/series/6-extra
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/6-extra Tue Oct 18 08:42:31 2011 (r18167)
+++ dists/sid/linux-2.6/debian/patches/series/6-extra Tue Oct 18 08:51:28 2011 (r18168)
@@ -1 +1 @@
-+ features/all/rt/patch-3.0.6-rt17.patch featureset=rt
++ features/all/rt/patch-3.0.6-rt18.patch featureset=rt
More information about the Kernel-svn-changes
mailing list