diff -drupN a/arch/arm/kernel/suspend.c b/arch/arm/kernel/suspend.c --- a/arch/arm/kernel/suspend.c 2018-08-06 17:23:04.000000000 +0300 +++ b/arch/arm/kernel/suspend.c 2022-06-12 05:28:14.000000000 +0300 @@ -56,6 +56,14 @@ void __cpu_suspend_save(u32 *ptr, u32 pt { u32 *ctx = ptr; + /* + * ptr is the pointer of stack + */ +#if IS_ENABLED(CONFIG_VMAP_STACK) + if (is_vmalloc_addr(ptr)) + *save_ptr = page_to_phys(vmalloc_to_page(ptr)) + offset_in_page(ptr); + else +#endif *save_ptr = virt_to_phys(ptr); /* This must correspond to the LDM in cpu_resume() assembly */