This series implements support for CPU hotplug/unplug on Arm. To achieve this,
several things need to be done:
1. XEN_SYSCTL_CPU_HOTPLUG_* calls implemented.
2. timer and GIC maintenance interrupts switched to static irqactions to remove
the need for freeing them during release_irq.
3. Enabled the build of xen-hptool on Arm.
4. Migration of irqs from dying CPUs implemented.
Tested on QEMU.
Note: As there are currently no Xen-used IRQs on non-zero CPUs, I used a hack
that changed default affinity of IRQs in setup_irq to properly test IRQ
migration. The hack consisted of changing smp_processor_id call to some
hard-coded non-zero number.
v3->v4:
* add irq migration patches
* see individual patches
v2->v3:
* add docs
v1->v2:
* see individual patches
Mykyta Poturai (5):
arm/time: Use static irqaction
arm/gic: Use static irqaction
arm/irq: Keep track of irq affinities
arm/irq: Migrate IRQs from dyings CPUs
smp: Move cpu_up/down helpers to common code
arm/sysctl: Implement cpu hotplug ops
tools: Allow building xen-hptool without CONFIG_MIGRATE
docs: Document CPU hotplug
config/Tools.mk.in | 1 +
docs/misc/cpu-hotplug.txt | 51 ++++++++++++++++++++++++++++++++
tools/configure | 30 +++++++++++++++++++
tools/configure.ac | 1 +
tools/libs/guest/Makefile.common | 4 +++
tools/misc/Makefile | 2 +-
xen/arch/arm/Kconfig | 4 +++
xen/arch/arm/gic.c | 11 +++++--
xen/arch/arm/include/asm/irq.h | 2 ++
xen/arch/arm/irq.c | 42 ++++++++++++++++++++++++++
xen/arch/arm/smp.c | 6 ++++
xen/arch/arm/smpboot.c | 2 ++
xen/arch/arm/sysctl.c | 32 ++++++++++++++++++++
xen/arch/arm/time.c | 21 ++++++++++---
xen/arch/ppc/stubs.c | 4 +++
xen/arch/riscv/stubs.c | 5 ++++
xen/arch/x86/include/asm/smp.h | 3 --
xen/arch/x86/smp.c | 33 ++-------------------
xen/common/smp.c | 32 ++++++++++++++++++++
xen/include/xen/smp.h | 4 +++
20 files changed, 250 insertions(+), 40 deletions(-)
create mode 100644 docs/misc/cpu-hotplug.txt
mode change 100755 => 100644 tools/configure
--
2.51.2