tree bc4306801de01cfe70049c5b6daf1081cf7e16de
parent b3d6bdfea21ce1bbb45c3e6f297dfaf570d36300
parent c0317210012e3b985779ddd92a7c5db8424e1e97
author Palmer Dabbelt <palmer@rivosinc.com> 1682792715 -0700
committer Palmer Dabbelt <palmer@rivosinc.com> 1682792853 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEKzw3R0RoQ7JKlDp6LhMZ81+7GIkFAmRNYZUTHHBhbG1lckBk
 YWJiZWx0LmNvbQAKCRAuExnzX7sYic2JD/4hWTMTrMxweYgt4NbqntE/ocFS0hPf
 BvN7/WhJugsh87QDDuQ0e5OuklccYqstNIy5GMk9mFYnnnGp3RFtsa5hKIzG0C3c
 tI4u5L+dNdqUPEIIE5sHfPktBEKqkesLHucjGTzR7lGZf+8UOydTng+xfvJ2dxwP
 zQVH3j6TZ4AT3dJFtJGIrCKCobBY2zSIcLcrXGD4SzwEnc8UqYw4yx/S2RTsS9TF
 PtmrPHEGgZqg8mfKn365ej0r4Z0niwQroJ9Ux2q3uwDX2j+U6Zi1hnRAQLWrsR1A
 CZsyG1JKd7gbvvtOQPwET+qvyRSMhgmIT/hqPT5Oo/5vdzO4O4yuZlMvN0lfUkj9
 jqsCm/L/h1hLMGxaI46/yPqz1zO0AR43KObmaadrWh/wLbqoAUevPorCGycNOUwB
 DBfQp44/EAs1k2knyv/A2nONdVIYoNhobmBOohgpV23JpaPxlrDSi5dSNeGnTgUL
 POnoL6e5RiBKwAlHbPg60CY8rNeAF4DQuuTjG8g84Ck0Nwk4ucoPJEw2aVZBW0Nx
 a/wP2/TODHl6jUYGsV/qunb1eYtxUdNp6YoRVtrqd2tlZn8YhB2KE1Qi0El/z7rT
 o5vTiNocwX3pnOsWDVFMDHC901g63d0GRfoq/ZzYdFAhGbZuqBfo5mjR8oriueJG
 E3Bhxr5S00ahBA==
 =eKcw
 -----END PGP SIGNATURE-----

Merge patch series "RISC-V Hibernation Support"

Sia Jee Heng <jeeheng.sia@starfivetech.com> says:

This series adds RISC-V Hibernation/suspend to disk support.
Low level Arch functions were created to support hibernation.
swsusp_arch_suspend() relies code from __cpu_suspend_enter() to write
cpu state onto the stack, then calling swsusp_save() to save the memory
image.

Arch specific hibernation header is implemented and is utilized by the
arch_hibernation_header_restore() and arch_hibernation_header_save()
functions. The arch specific hibernation header consists of satp, hartid,
and the cpu_resume address. The kernel built version is also need to be
saved into the hibernation image header to making sure only the same
kernel is restore when resume.

swsusp_arch_resume() creates a temporary page table that covering only
the linear map. It copies the restore code to a 'safe' page, then start to
restore the memory image. Once completed, it restores the original
kernel's page table. It then calls into __hibernate_cpu_resume()
to restore the CPU context. Finally, it follows the normal hibernation
path back to the hibernation core.

To enable hibernation/suspend to disk into RISCV, the below config
need to be enabled:
- CONFIG_HIBERNATION
- CONFIG_ARCH_HIBERNATION_HEADER
- CONFIG_ARCH_HIBERNATION_POSSIBLE

At high-level, this series includes the following changes:
1) Change suspend_save_csrs() and suspend_restore_csrs()
   to public function as these functions are common to
   suspend/hibernation. (patch 1)
2) Refactor the common code in the __cpu_resume_enter() function and
   __hibernate_cpu_resume() function. The common code are used by
   hibernation and suspend. (patch 2)
3) Enhance kernel_page_present() function to support huge page. (patch 3)
4) Add arch/riscv low level functions to support
   hibernation/suspend to disk. (patch 4)

* b4-shazam-merge:
  RISC-V: Add arch functions to support hibernation/suspend-to-disk
  RISC-V: mm: Enable huge page support to kernel_page_present() function
  RISC-V: Factor out common code of __cpu_resume_enter()
  RISC-V: Change suspend_save_csrs and suspend_restore_csrs to public function

Link: https://lore.kernel.org/r/20230330064321.1008373-1-jeeheng.sia@starfivetech.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
