All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
	linux-rt-users <linux-rt-users@vger.kernel.org>
Subject: Re: [ANNOUNCE] 3.0.6-rt18
Date: Thu, 13 Oct 2011 14:44:32 -0700	[thread overview]
Message-ID: <20111013214432.GC2350@linux.vnet.ibm.com> (raw)
In-Reply-To: <alpine.LFD.2.02.1110131146370.3240@ionos>

On Thu, Oct 13, 2011 at 11:52:18AM +0200, Thomas Gleixner wrote:
> Dear RT Folks,
> 
> I'm pleased to announce the 3.0.6-rt18 release.
> 
> Changes from 3.0.6-rt17 to 3.0.6-rt18
> 
>   * Fix a long standing slab thinko (Steven Rostedt)
> 
>   * Add missing debugobjects call to hrtimers (Yong Zhang)
> 
>   * Tracing updates (Steven Rostedt)
> 
>   * Minor fixes (Yong, myself)
> 
> Delta patch against 3.0.6-rt17
> 
>   https://tglx.de/~tglx/rt/patch-3.0.6-rt17-rt18.patch.gz

And rcutorture is quite happy with this release under 2-CPU KVM on x86.

							Thanx, Paul

> also appended below.
> 
> 
> Patch against 3.0.6 can be found here:
> 
>   https://tglx.de/~tglx/rt/patch-3.0.6-rt18.patch.gz
> 
> 
> The split quilt queue is available at:
> 
>   https://tglx.de/~tglx/rt/patches-3.0.6-rt18.tar.gz
> 
> Enjoy,
> 
> 	tglx
> 
> --------------->
> Index: linux-2.6/arch/x86/kernel/hpet.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/hpet.c
> +++ linux-2.6/arch/x86/kernel/hpet.c
> @@ -570,6 +570,7 @@ static void init_one_hpet_msi_clockevent
>  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[] = {
> Index: linux-2.6/include/linux/hardirq.h
> ===================================================================
> --- linux-2.6.orig/include/linux/hardirq.h
> +++ linux-2.6/include/linux/hardirq.h
> @@ -84,7 +84,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
> 
> Index: linux-2.6/kernel/hrtimer.c
> ===================================================================
> --- linux-2.6.orig/kernel/hrtimer.c
> +++ linux-2.6/kernel/hrtimer.c
> @@ -1040,6 +1040,7 @@ int __hrtimer_start_range_ns(struct hrti
>  			 * 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);
>  		}
> Index: linux-2.6/kernel/trace/ftrace.c
> ===================================================================
> --- linux-2.6.orig/kernel/trace/ftrace.c
> +++ linux-2.6/kernel/trace/ftrace.c
> @@ -1767,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;
> @@ -1783,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
> @@ -1806,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);
> @@ -2430,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;
> 
> @@ -2453,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;
> @@ -2783,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;
>  		}
>  	}
> Index: linux-2.6/localversion-rt
> ===================================================================
> --- linux-2.6.orig/localversion-rt
> +++ linux-2.6/localversion-rt
> @@ -1 +1 @@
> --rt17
> +-rt18
> Index: linux-2.6/mm/slab.c
> ===================================================================
> --- linux-2.6.orig/mm/slab.c
> +++ linux-2.6/mm/slab.c
> @@ -2601,7 +2601,7 @@ static void __do_drain(void *arg, unsign
>  	struct array_cache *ac;
>  	int node = cpu_to_mem(cpu);
> 
> -	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);
>  	spin_unlock(&cachep->nodelists[node]->list_lock);
> 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;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

  reply	other threads:[~2011-10-13 21:45 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-13  9:52 [ANNOUNCE] 3.0.6-rt18 Thomas Gleixner
2011-10-13 21:44 ` Paul E. McKenney [this message]
2011-10-17  7:01 ` [PATCH] rt18: fix warnings in ftrace.h Michael Thalmeier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20111013214432.GC2350@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.