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 */