Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>> If we enter __ipipe_handle_exception over a non-root domain and leave it
>> due to migration in the event handler over root, we must not restore the
>> root domain state so far saved on entry. This caused subtle pipeline
>> state corruptions. Actually, we only need to save the state if we enter
>> over the root domain and have to align its state to the hardware
>> interrupt mask.
>>
>> Moreover, the x86-32 regs.eflags fix-up must happen based on the current
>> root domain state to avoid more spurious corruptions.
>>
>> Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
>> ---
>>
>> This patch is so far running fine on the x86-64 boxes of our colleagues
>> @Healthcare. It currently makes most sense to me, also for (untested)
>> x86-32, but maybe I'm still missing a problematic scenario.
>>
>>  arch/x86/kernel/ipipe.c |   64 
>> ++++++++++++++++++++++++++--------------------
>>  1 files changed, 36 insertions(+), 28 deletions(-)
>>
>> diff --git a/arch/x86/kernel/ipipe.c b/arch/x86/kernel/ipipe.c
>> index 4442d96..8253993 100644
>> --- a/arch/x86/kernel/ipipe.c
>> +++ b/arch/x86/kernel/ipipe.c
>> @@ -702,19 +702,17 @@ static int __ipipe_xlate_signo[] = {
>>  
>>  int __ipipe_handle_exception(struct pt_regs *regs, long error_code, int 
>> vector)
>>  {
>> -    unsigned long flags;
>> -
>> -    /* Pick up the root domain state of the interrupted context. */
>> -    local_save_flags(flags);
>> +    bool restore_flags = false;
>> +    unsigned long flags = 0;
>>  
>> -    if (ipipe_root_domain_p) {
>> +    if (ipipe_root_domain_p && irqs_disabled_hw()) {
> 
> I really do not understand this hunk. It differs a lot from the current
> situation. In the current situation __fixup_if really does something,
> even if irqs were not masked on entry.
> 

This hunk is no longer related to __fixup_if. The latter now picks up
the information about what to fix from root domain state _after_ the
return of the ipipe exception hook. That way we avoid leaking the wrong
root state on entry over a non-root domain after migration within the hook.

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to