mbox series

[0/5] Multicore support for ARINC653 scheduler

Message ID 20200916181854.75563-1-jeff.kubascik@dornerworks.com (mailing list archive)
Headers show
Series Multicore support for ARINC653 scheduler | expand


Jeff Kubascik Sept. 16, 2020, 6:18 p.m. UTC
This patch set adds multicore capability to the ARINC653 scheduler, based on the
guidance presented in the CAST-32A position paper. This approach only allows for
a single domain to run at any given time, but that domain is now able to use
multiple vCPUs running across the available pCPUs.

There are 5 patches in this series. The first 4 patches are intended to tidy up
the arinc653 scheduler code, so that it more closely resembles the coding style
and structure found in the other schedulers (mainly credit). The last patch
implements multicore support.

I have tested this feature on both the Xilinx MPSoC/ ZCU102 development board
and with ARMv8 QEMU. I have a bash script that tests various edge cases such as
schedule changes, creation and destruction of domains in the cpupool, domain
migration across cpupools, vCPU pinning, and vCPU overprovisioning (more vCPUs
than pCPUs). In each of these cases, the scheduler either works as expected or
behaves in a sane manner. For the latter, any quirks that were identified are
documented in the source code.

This patch set has been sitting on the backburner for the better part of a year,
so I have rebased it to latest commit on master. The tests above were re-run and
no problems were identified. I'm looking for feedback on the patch set to so
that it may be accepted into the Xen code base.

Jeff Kubascik (5):
  sched/arinc653: Clean up comments
  sched/arinc653: Rename scheduler private structs
  sched/arinc653: Clean up function definitions
  sched/arinc653: Reorganize function definition order
  sched/arinc653: Implement CAST-32A multicore scheduling

 xen/common/sched/arinc653.c | 1190 ++++++++++++++++++++---------------
 1 file changed, 686 insertions(+), 504 deletions(-)