From: Thierry Bultel <thierry.bultel@basystemes.fr>
To: Philippe Gerum <rpm@xenomai.org>,
xenomai@xenomai.org,
Jean-Baptiste Tredez <jean-baptiste.tredez@basystemes.fr>
Subject: Re: [Xenomai] Issue while porting ipipe to kernel > 4.5 (clockevents API change)
Date: Thu, 14 Apr 2016 14:55:06 +0200 [thread overview]
Message-ID: <570F932A.6020102@basystemes.fr> (raw)
In-Reply-To: <570CF2E2.3000904@basystemes.fr>
Le 12/04/2016 15:06, Thierry Bultel a écrit :
>
>
> Le 11/04/2016 17:05, Philippe Gerum a écrit :
>> On 04/11/2016 11:45 AM, Thierry Bultel wrote:
>>> Hi,
>>> while porting ipipe to 4.5, I am facing the following issue:
>>>
>>> clockchips.h has changed, and the set_mode function pointer has been
>>> replaced by
>>>
>>> int (*set_state_periodic)(struct clock_event_device *);
>>> int (*set_state_oneshot)(struct clock_event_device *);
>>> int (*set_state_oneshot_stopped)(struct
>>> clock_event_device *);
>>> int (*set_state_shutdown)(struct clock_event_device *);
>>>
>>> Moreover, CLOCK_EVT_MODE_XXX have been renamed to :
>>>
>>> enum clock_event_state {
>>> CLOCK_EVT_STATE_DETACHED,
>>> CLOCK_EVT_STATE_SHUTDOWN,
>>> CLOCK_EVT_STATE_PERIODIC,
>>> CLOCK_EVT_STATE_ONESHOT,
>>> CLOCK_EVT_STATE_ONESHOT_STOPPED,
>>> };
>>>
>>> The impact therefore goes further than ipipe , since xenomai uses a
>>> single pointer
>>> for performing emulation.
>>>
>>> I am just wondering what is the best way to deal with this, without
>>> impacting to much code
>>> Is it best to add a compatibility wrapper (moreover, the set_state_xxx
>>> functions are only used in clockevents.c), and some extra #defines
>>> or to spread the changes up to xenomai code ?
>>>
>> I would confine the changes to the pipeline, I don't see any reason for
>> spreading those changes to Xenomai only for supporting the
>> ONESHOT_STOPPED mode, which might be usable as a hint, but may be
>> ignored by Xenomai as well, especially by legacy Xenomai 2.x releases.
>>
>> You could redirect the new state handlers to a set of internal wrapper
>> routines in the pipeline, which would translate the calls to the
>> Xenomai's current emulation handlers.
>>
>
> Thanks Philippe,
>
> At this step, I have something that compiles without CONFIG_XENOMAI
> (there is a little work to do in xenomai,
> since some other kernel APIs changed too, like cpu masks, and struct
> msghdr ... )
>
> Before going to that, I would like to get rid of this:
>
> The kernel boots fine with CONFIG_IPIPE disabled.
>
> With CONFIG_IPIPE and !CONFIG_SMP, the kernel boots fine up to user land.
> With CONFIG_IPIPE and CONFIG_SMP, the kernel hangs at random
> positions during initcalls.
> I had to enable CONFIG_EARLY_PRINTK to notice it, because nothing came
> on the console else.
>
> "printk-bisecting" makes the hang position change, making impossible
> to localize the hang position this way.
>
> I have CONFIG_DEBUG_SPINLOCK enabled but that does not help much. I
> payed much attention to spinlock.h without noticing
> anything wrong.
>
> What can I do to investigate this ?
>
> I forgot to say that the target CPU is an IMX6Q
>
> Thanks
> Thierry
>
Hi,
I managed to narrow down the issue.
tick_sched_timer() is never called, because the softirq timer code is not executed.. thus calls like 'msleep' never return.
The reason is that in timekeeping_get_delta(), the "now" is always the same,
that is to say, that tkr->read (which is __ipipe_tsc_get) always report the same value.
I have CONFIG_IPIPE_ARM_KUSER_TSC enabled (by default)
What can be wrong ?
(The base I started with is ipipe-core-4.1.18-arm-4.patch)
Thanks
Thierry
prev parent reply other threads:[~2016-04-14 12:55 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-11 9:45 [Xenomai] Issue while porting ipipe to kernel > 4.5 (clockevents API change) Thierry Bultel
2016-04-11 15:05 ` Philippe Gerum
2016-04-12 13:06 ` Thierry Bultel
2016-04-14 12:55 ` Thierry Bultel [this message]
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=570F932A.6020102@basystemes.fr \
--to=thierry.bultel@basystemes.fr \
--cc=jean-baptiste.tredez@basystemes.fr \
--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.