Message ID | 20230526-astride-detonator-9ae120051159@wendy (mailing list archive) |
---|---|
State | Accepted |
Commit | ed309ce522185583b163bd0c74f0d9f299fe1826 |
Headers | show |
Series | [v1] RISC-V: mark hibernation as nonportable | expand |
Context | Check | Description |
---|---|---|
conchuod/cover_letter | success | Single patches do not need cover letters |
conchuod/tree_selection | success | Guessed tree name to be for-next at HEAD ac9a78681b92 |
conchuod/fixes_present | success | Fixes tag not required for -next series |
conchuod/maintainers_pattern | success | MAINTAINERS pattern errors before the patch: 6 and now 6 |
conchuod/verify_signedoff | success | Signed-off-by tag matches author and committer |
conchuod/kdoc | success | Errors and warnings before: 0 this patch: 0 |
conchuod/build_rv64_clang_allmodconfig | success | Errors and warnings before: 14 this patch: 14 |
conchuod/module_param | success | Was 0 now: 0 |
conchuod/build_rv64_gcc_allmodconfig | success | Errors and warnings before: 28 this patch: 28 |
conchuod/build_rv32_defconfig | success | Build OK |
conchuod/dtb_warn_rv64 | success | Errors and warnings before: 3 this patch: 3 |
conchuod/header_inline | success | No static functions without inline keyword in header files |
conchuod/checkpatch | warning | WARNING: Reported-by: should be immediately followed by Closes: with a URL to the report |
conchuod/build_rv64_nommu_k210_defconfig | success | Build OK |
conchuod/verify_fixes | success | No Fixes tag |
conchuod/build_rv64_nommu_virt_defconfig | success | Build OK |
On Fri, 26 May 2023 11:59:08 +0100, Conor Dooley wrote: > Hibernation support depends on firmware marking its reserved/PMP > protected regions as not accessible from Linux. > The latest versions of the de-facto SBI implementation (OpenSBI) do > not do this, having dropped the no-map property to enable 1 GiB huge > page mappings by the kernel. > This was exposed by commit 3335068f8721 ("riscv: Use PUD/P4D/PGD pages > for the linear mapping"), which made the first 2 MiB of DRAM (where SBI > typically resides) accessible by the kernel. > Attempting to hibernate with either OpenSBI, or other implementations > following its lead, will lead to a kernel panic ([1], [2]) as the > hibernation process will attempt to save/restore any mapped regions, > including the PMP protected regions in use by the SBI implementation. > > [...] Applied, thanks! [1/1] RISC-V: mark hibernation as nonportable https://git.kernel.org/palmer/c/ed309ce52218 Best regards,
Hello: This patch was applied to riscv/linux.git (fixes) by Palmer Dabbelt <palmer@rivosinc.com>: On Fri, 26 May 2023 11:59:08 +0100 you wrote: > Hibernation support depends on firmware marking its reserved/PMP > protected regions as not accessible from Linux. > The latest versions of the de-facto SBI implementation (OpenSBI) do > not do this, having dropped the no-map property to enable 1 GiB huge > page mappings by the kernel. > This was exposed by commit 3335068f8721 ("riscv: Use PUD/P4D/PGD pages > for the linear mapping"), which made the first 2 MiB of DRAM (where SBI > typically resides) accessible by the kernel. > Attempting to hibernate with either OpenSBI, or other implementations > following its lead, will lead to a kernel panic ([1], [2]) as the > hibernation process will attempt to save/restore any mapped regions, > including the PMP protected regions in use by the SBI implementation. > > [...] Here is the summary with links: - [v1] RISC-V: mark hibernation as nonportable https://git.kernel.org/riscv/c/ed309ce52218 You are awesome, thank you!
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 13f058490608..117d53785560 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -800,8 +800,11 @@ menu "Power management options" source "kernel/power/Kconfig" +# Hibernation is only possible on systems where the SBI implementation has +# marked its reserved memory as not accessible from, or does not run +# from the same memory as, Linux config ARCH_HIBERNATION_POSSIBLE - def_bool y + def_bool NONPORTABLE config ARCH_HIBERNATION_HEADER def_bool HIBERNATION
Hibernation support depends on firmware marking its reserved/PMP protected regions as not accessible from Linux. The latest versions of the de-facto SBI implementation (OpenSBI) do not do this, having dropped the no-map property to enable 1 GiB huge page mappings by the kernel. This was exposed by commit 3335068f8721 ("riscv: Use PUD/P4D/PGD pages for the linear mapping"), which made the first 2 MiB of DRAM (where SBI typically resides) accessible by the kernel. Attempting to hibernate with either OpenSBI, or other implementations following its lead, will lead to a kernel panic ([1], [2]) as the hibernation process will attempt to save/restore any mapped regions, including the PMP protected regions in use by the SBI implementation. Mark hibernation as depending on "NONPORTABLE", as only a small subset of systems are capable of supporting it, until such time that an SBI implementation independent way to communicate what regions are in use has been agreed on. As hibernation support landed in v6.4-rc1, disabling it for most platforms does not constitute a regression. The alternative would have been reverting commit 3335068f8721 ("riscv: Use PUD/P4D/PGD pages for the linear mapping"). Doing so would permit hibernation on platforms with these SBI implementations, but would limit the options we have to solve the protection of the region without causing a regression in hibernation support. Reported-by: Song Shuai <suagrfillet@gmail.com> Link: https://lore.kernel.org/all/CAAYs2=gQvkhTeioMmqRDVGjdtNF_vhB+vm_1dHJxPNi75YDQ_Q@mail.gmail.com/ [1] Reported-by: JeeHeng Sia <jeeheng.sia@starfivetech.com> Link: https://groups.google.com/a/groups.riscv.org/g/sw-dev/c/ITXwaKfA6z8 [2] Signed-off-by: Conor Dooley <conor.dooley@microchip.com> --- arch/riscv/Kconfig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)