[PATCH 1/2] cpukit/aarch64: Keep state across context switch
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Mar 8 18:31:11 UTC 2022
On 08/03/2022 15:06, Kinsey Moore wrote:
> On 3/8/2022 02:52, Sebastian Huber wrote:
>> On 28/02/2022 20:18, Kinsey Moore wrote:
>>>
>>> On 2/28/2022 12:19, Sebastian Huber wrote:
>>>> On 26/02/2022 08:03, Kinsey Moore wrote:
>>>>> On 2/26/2022 00:53, Sebastian Huber wrote:
>>>>>> On 26/02/2022 00:41, Kinsey Moore wrote:
>>>>>>> This may also be an issue for ARM, RISC-V and others as it
>>>>>>> doesn't appear that ARM saves CPSR during context switch and I
>>>>>>> couldn't tell that RISC-V does this either, though I'm less
>>>>>>> familiar with it.
>>>>>>
>>>>>> This doesn't look like the right way to fix this issue.
>>>>>>
>>>>>> There is currently the assumption that all processors start
>>>>>> multitasking with a context switch to _Thread_Handler() which sets
>>>>>> the interrupt level. It is possible to construct a scenario in
>>>>>> which we start multitasking with a migration of a thread which
>>>>>> already executed the _Thread_Handler() prologue. This would result
>>>>>> in an execution with disabled interrupts. I think the proper fix
>>>>>> for this scenario is to enable interrupts in
>>>>>> _CPU_SMP_Prepare_start_multitasking().
>>>>>>
>>>>>> Doing a context switch with interrupts disabled is a fatal
>>>>>> application error on all architectures with
>>>>>>
>>>>>> #define CPU_ENABLE_ROBUST_THREAD_DISPATCH TRUE
>>>>>>
>>>>>> or enabled SMP support.
>>>>>>
>>>>> Ok, great. I was wondering if that was the case and this is
>>>>> definitely the kind of feedback I was looking for. I'll adjust the
>>>>> patch set to reflect that. I still wonder if this is an issue on
>>>>> other SMP CPU ports, though, since most of them don't implement
>>>>> that hook, either.
>>>>
>>>> I would like to have a closer look at this next week then I am back
>>>> from holidays.
>>>>
>>>> Enabling interrupts in _CPU_SMP_Prepare_start_multitasking() would
>>>> not work since we use the interrupt stack at this point. We should
>>>> add a ticket and a test case for this (I can do this next week). How
>>>> did you observe this bug?
>>>>
>>> I was only able to observe this bug once the 2/2 patch is applied and
>>> that optimization opens a race condition (adding a few no-ops to the
>>> Per_CPU_Control accessor prevents it from appearing) in the
>>> sppercpudata01 test on SMP configurations since the task is migrating
>>> across CPUs as CPUs are coming online. The race condition resolves
>>> nominally in 90% of cases so while it's not a frequent failure it is
>>> reproducible.
>>
>> I added a ticket and a test case:
>>
>> http://devel.rtems.org/ticket/4627
>>
>> Could you please check if the test case fails currently on your
>> aarch64 target?
>
> I have verified that this test case fails under QEMU and on the hardware
> target.
Thanks for the test, could you please have a look at this patch:
https://lists.rtems.org/pipermail/devel/2022-March/070760.html
--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax: +49-89-18 94 741 - 08
Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
More information about the devel
mailing list