All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
To: Philippe Gerum <rpm@xenomai.org>
Cc: Xenomai <xenomai@xenomai.org>
Subject: Re: [Xenomai] ftrace dispatch function broken on 2.6.5
Date: Sat, 18 Jun 2016 15:52:35 +0200	[thread overview]
Message-ID: <20160618135235.GE18433@hermes.click-hack.org> (raw)
In-Reply-To: <8e8bb173-eda9-bab4-6236-634da1e396cb@xenomai.org>

On Sat, Jun 18, 2016 at 03:21:40PM +0200, Philippe Gerum wrote:
> On 06/18/2016 03:08 PM, Gilles Chanteperdrix wrote:
> > Hi Philippe,
> > 
> > it seems since I-pipe commit
> > b115c4094d734e19fa7a96be1bf3958b3d244b8b on the ipipe-3.18 branch:
> >     Revert "ipipe: Register function tracer for direct and exclusive invocation"
> >     
> >     This reverts commit e00888b4aae45d9b84698a62079dde14c9be5fd3.
> >     
> >     We now have an I-pipe-compatible dispatching function for ftrace.
> > 
> > The ftrace dispatching function causes the following warning at
> > boot on x86_32 with all warnings/debugs enabled:
> > [    4.730812] I-pipe: head domain Xenomai registered.
> > [    4.737967] I-pipe: Detected illicit call from head domain 'Xenomai'
> > [    4.737967]         into a regular Linux service
> > 
> > Because it calls preempt_disable(), which is not safe to be called
> > form root domain, when runnning over 2.6.x on an architecture such
> > as x86_32 which does not have IPIPE_HAVE_SAFE_THREAD_INFO.
> > 
> > Should we make the ftrace dispatching function really I-pipe
> > compatible by calling ipipe_preempt_disable() in that case instead?
> > or should we make the patch revert conditional to !IPIPE_LEGACY or
> > IPIPE_HAVE_SAFE_THREAD_INFO (but that would make only the I-pipe
> > tracer work in that case).
> > 
> 
> I would go for the change which has the lesser impact on the mainline
> code; that would be option #1.

Ok, now I get:

   12.958818] I-pipe: Detected stalled head domain, probably caused by a bug.
[   12.958818]         A critical section may have been left unterminated.

I guess in the following sequence:

#define hard_preempt_disable()				\
	({						\
		unsigned long __flags__;		\
		__flags__ = hard_local_irq_save();	\
		if (__ipipe_root_p)			\
			preempt_disable();		\
		__flags__;				\
	})

preempt_disable() gets called with the head domain stalled, while
current domain is root, and ipipe_root_only() treats this as an
error.

-- 
					    Gilles.
https://click-hack.org


  parent reply	other threads:[~2016-06-18 13:52 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-18 13:08 [Xenomai] ftrace dispatch function broken on 2.6.5 Gilles Chanteperdrix
2016-06-18 13:21 ` Philippe Gerum
2016-06-18 13:37   ` Gilles Chanteperdrix
2016-06-19 17:28     ` Philippe Gerum
2016-06-19 17:34       ` Gilles Chanteperdrix
2016-06-19 18:35         ` Philippe Gerum
2016-06-18 13:52   ` Gilles Chanteperdrix [this message]
2016-06-18 17:20     ` Gilles Chanteperdrix
2016-06-18 18:20       ` Gilles Chanteperdrix
2016-06-18 20:00         ` Gilles Chanteperdrix

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=20160618135235.GE18433@hermes.click-hack.org \
    --to=gilles.chanteperdrix@xenomai.org \
    --cc=rpm@xenomai.org \
    --cc=xenomai@xenomai.org \
    /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.