On 13.03.25 10:27, Choi, Anderson wrote:
Juergen,

On 13.03.25 07:51, Choi, Anderson wrote:
We are observing an incorrect or unexpected behavior with ARINC653
scheduler when we set up multiple ARINC653 CPU pools and assign a
different number of domains to each CPU pool.

...

It seems there's a corner condition in using the global variables "sched_index"
and "next_switch_time" when multiple ARINC653 cpupools are running on
different physical CPUs

The variables sched_index and next_switch_time are defined as static
at xen/common/sched/arinc653.c as shown below.

static void cf_check
a653sched_do_schedule(
      const struct scheduler *ops, struct sched_unit *prev, s_time_t
      now, bool tasklet_work_scheduled) { struct sched_unit *new_task =
      NULL; static unsigned int sched_index = 0;    <== static s_time_t
      next_switch_time;       <==

Thanks for the report!

Could you please verify the attached patch is fixing your problem?

And please tell me whether adding you as "Reported-by:" is fine with you!

Juergen

Thanks for the quick patch. I have verified the patch fixes the issue and I can 
see domains are running at the programmed interval.

Thanks for verifying.


And I am totally fine with "Reported-by".

May I know when you think it would be mainlined? And will it be applied to all 
branches, like 4.19 and 4.20?

Shouldn't be too long, but this will depend on maintainers giving their okay.

As the patch is fixing a real worlds bug, it should be included in the stable
branches, too (4.18 and newer still get backports).


Juergen

Attachment: OpenPGP_0xB0DE9DD628BF132F.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to