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 ARINC653scheduler 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 CPUsThe 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! JuergenThanks 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
OpenPGP_0xB0DE9DD628BF132F.asc
Description: OpenPGP public key
OpenPGP_signature.asc
Description: OpenPGP digital signature
