On 18/09/12 21:36, Gilles Chanteperdrix wrote:
> On 09/18/2012 05:27 PM, Wolfgang Mauerer wrote:
> 
>> On 18/09/12 16:25, Gilles Chanteperdrix wrote:
>>> On 09/18/2012 04:11 PM, Wolfgang Mauerer wrote:
>>>> Dear all,
>>>>
>>>> here's a rebase of the x86-specific bits of core-4 to core-5. I've
>>>> included all x86 specific changes that are not yet in core-5, and
>>>> also added the patches I sent earlier for core-4. I did not include a
>>>> separate patch for the mechanical changes required to apply the
>>>> x86 base patch on top of core-5, but can surely do so if desired.
>>>
>>> I am not quite finished with x86 on 3.4. So, I would like to start 3.5
>>> from the finishing point on 3.4. There are already commits in my branch
>>> which you did not take:
>>>
>>> http://git.xenomai.org/?p=ipipe-gch.git;a=shortlog;h=refs/heads/for-core-3.4
>> that's true; my last pull was too old. I'll add the corresponding
>> commits to the tree (FYI, the purpose of this tree is mainly to do some
>> experiments with the latest ipipe release and the latest kernel, and
>> I wanted to make sure that work is not duplicated in case someone else
>> is pursuing similar goals)
> 
> 
> Ok. We have a currently pending issue on x86 which you should be
> informed about before discovering it during your tests: using
> rthal_supported_cpus is broken in I-pipe core patches when using the
> LAPIC timer: since there is only one irq handler for all the LAPIC
> timers, the handler is registered on all cpus, but on non started cpus,
> the handler will do nothing at best, and not foward the LAPIC ticks to
> Linux (which is still in control of the LAPIC timer on these cpus).
> 
> This problem is due to the fact that we keep the same vector as Linux,
> and so the same irq. There are two ways out of this:
> 
> - change the LAPIC vector when xenomai takes the control of the LAPIC
> timer, like we use to do, this is racy with current code because the
> timer is taken by Xenomai but still used a bit by Linux, before it is
> programmed by Xenomai, and Xenomai assumes that the host tick irq is the
> same as the timer irq. All this can be fixed, but the last drawback of
> this approach is that it does not fix the issue on architectures where
> the local timer irq is the same on all cpus, but can not be changed,
> hence the second approach;
> - the second approach is to add a test at the beginning of
> xnintr_clock_handler and forward the irq to the root domain if the
> current cpu does not belong to xnarch_supported_cpus. This means some
> patching of I-pipe timers so that ipipe_percpu.hrtimer_irq also gets
> defined for non supported cpus when they use the timer shared with other
> cpus, essentially what this patch tries (but fails) to achieve:
> 
> http://www.xenomai.org/pipermail/xenomai/2012-September/026066.html

thanks for the info! Unfortunately, I was not able to reproduce this
issue quickly using two latency instances bound to different CPUs on a
machine booted with isolcpus=1, though.

I did also not see the issue with core-5, but that's because
bdeaf76ba30a517 (ipipe/x86: use the vector_irq for system vectors too)
leads to a stuck CPU bringup for >1 CPUs. Will maybe look into that a
bit further.

Best regards, Wolfgang

_______________________________________________
Xenomai mailing list
Xenomai@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to