diff --git a/xen/arch/arm/percpu.c b/xen/arch/arm/percpu.c index 25442c48fe..597027c6c9 100644 --- a/xen/arch/arm/percpu.c +++ b/xen/arch/arm/percpu.c @@ -58,11 +58,14 @@ static int cpu_percpu_callback( switch ( action ) { case CPU_UP_PREPARE: - rc = init_percpu_area(cpu); + if ( system_state != SYS_STATE_resume ) + rc = init_percpu_area(cpu); break; case CPU_UP_CANCELED: case CPU_DEAD: - free_percpu_area(cpu); + case CPU_RESUME_FAILED: + if ( system_state != SYS_STATE_suspend ) + free_percpu_area(cpu); break; default: break;