|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v1 0/2] Move percpu code to common
The per-CPU area management code, which is largely common across architectures,
is a strong candidate for consolidation into common code.
Currently, there are three architectural-specific aspects that are not yet
unified ( if they can be unified at all ):
1. INVALID_PERCPU_AREA:
ARM:
#define INVALID_PERCPU_AREA (-(long)__per_cpu_start)
x86:
#define INVALID_PERCPU_AREA (0x8000000000000000UL - (unsigned
long)__per_cpu_start)
2. Return value when __per_cpu_offset Is Already Initialized:
Arm:
if (__per_cpu_offset[cpu] != INVALID_PERCPU_AREA)
return -EBUSY;
x86:
if (__per_cpu_offset[cpu] != INVALID_PERCPU_AREA)
return 0;
3. Handling of CPU_RESUME_FAILED and CPU_REMOVE in cpu_percpu_callback:
Arm:
switch (action)
{
case CPU_UP_CANCELED:
case CPU_DEAD:
free_percpu_area(cpu);
break;
}
x86:
switch (action)
{
case CPU_UP_CANCELED:
case CPU_DEAD:
case CPU_RESUME_FAILED:
if (!park_offline_cpus && system_state != SYS_STATE_suspend)
free_percpu_area(cpu);
break;
case CPU_REMOVE:
if (park_offline_cpus)
free_percpu_area(cpu);
break;
}
These changes do not affect the functional behavior.
Oleksii Kurochko (2):
xen: introduce common macros for per-CPU sections defintion
xen: move per-cpu area management into common code
xen/arch/arm/Makefile | 1 -
xen/arch/arm/percpu.c | 85 --------------------
xen/arch/arm/xen.lds.S | 9 +--
xen/arch/ppc/stubs.c | 1 -
xen/arch/ppc/xen.lds.S | 9 +--
xen/arch/riscv/stubs.c | 1 -
xen/arch/x86/include/asm/Makefile | 1 -
xen/arch/x86/include/asm/percpu.h | 18 +++++
xen/arch/x86/percpu.c | 92 ++--------------------
xen/arch/x86/xen.lds.S | 9 +--
xen/common/Makefile | 1 +
xen/common/percpu.c | 127 ++++++++++++++++++++++++++++++
xen/include/asm-generic/percpu.h | 8 ++
xen/include/xen/xen.lds.h | 10 +++
14 files changed, 172 insertions(+), 200 deletions(-)
delete mode 100644 xen/arch/arm/percpu.c
create mode 100644 xen/arch/x86/include/asm/percpu.h
create mode 100644 xen/common/percpu.c
--
2.46.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |