On 07.10.22 12:32, Mykyta Poturai wrote:
From: Juergen Gross <[email protected]>Instead of freeing percpu areas during suspend and allocating them again when resuming keep them. Only free an area in case a cpu didn't come up again when resuming. It should be noted that there is a potential change in behaviour as the percpu areas are no longer zeroed out during suspend/resume. While I have checked the called cpu notifier hooks to cope with that there might be some well hidden dependency on the previous behaviour. OTOH a component not registering itself for cpu down/up and expecting to see a zeroed percpu variable after suspend/resume is kind of broken already. And the opposite case, where a component is not registered to be called for cpu down/up and is not expecting a percpu variable suddenly to be zero due to suspend/resume is much more probable, especially as the suspend/resume functionality seems not to be tested that often. Signed-off-by: Juergen Gross <[email protected]>
I can't remember having written this patch. The one I remember was for x86.
Reviewed-by: Dario Faggioli <[email protected]>
I doubt that, reasoning see above. Juergen
---
xen/arch/arm/percpu.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/xen/arch/arm/percpu.c b/xen/arch/arm/percpu.c
index 25442c48fe..0642705544 100644
--- a/xen/arch/arm/percpu.c
+++ b/xen/arch/arm/percpu.c
@@ -58,10 +58,13 @@ static int cpu_percpu_callback(
switch ( action )
{
case CPU_UP_PREPARE:
+ if ( system_state != SYS_STATE_resume )
rc = init_percpu_area(cpu);
break;
case CPU_UP_CANCELED:
case CPU_DEAD:
+ case CPU_RESUME_FAILED:
+ if ( system_state != SYS_STATE_suspend )
free_percpu_area(cpu);
break;
default:
OpenPGP_0xB0DE9DD628BF132F.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature
