Re: [PATCH 0/7] arm64: hibernate: dust off the suspend/cleanup rework
From: Bradley Morgan <hidden>
Date: 2026-09-02 13:51:44
Also in:
lkml
On 2 September 2026 14:50:22 BST, Mark Rutland [off-list ref] wrote:
On Tue, Aug 25, 2026 at 08:58:32PM +0000, Bradley Morgan wrote:quoted
This comes out of the hibernate resume discussion where Will asked if the restored kernel's hyp vectors are reinstalled before we come back from swsusp_arch_suspend() and free the reserved pages. Rather than answer with a one off fix, this series reworks resume to look like a resume from idle, which makes the answer fall out on its own. The series leans on Mark Rutland's old work for inspiration, he had the same end goal in a branch from back then:https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git/log/?h=arm64/suspend/cleanup Most of the series seems to be a rebased of those patches, just with paraphrased commit messages and my S-o-B lines dropped. As commented on patch 4, I do not think that is appropriate.
Same question as patch 2 If you want your S-O-B added, ok fine, but yeah. Do you think this series itself is good?
I'll take a more in-depth look shortly.
thanks!
Catalin, Will, for the moment please do not pick these up. Mark.quoted
The short answer to the question: yes, but only because the rework makes resume look like a resume from idle. We enter cpu_resume() at thehighestquoted
available EL with the MMU off, and the resumed kernel installs its own hyp stub vectors into VBAR_EL2 through init_kernel_el() before anything else runs, so by the time swsusp_free() releases the trans_pgd copies nothing points at them anymore. The series is structured so the first patch stands alone as a stable worthy fix for the missing hvc arguments. The rest is the cleanup: the stale init_kernel_el() comment gets corrected, MTE tag pages get freed after save instead of leaking on failed hibernates, the fragile _cpu_resume() calling convention gets split, and the last patch reworks hibernate to use the regular cpu_resume() logic end to end. Everything object compiles and passes checkpatch and sparse. I could not boot or run a hibernate cycle on real hardware here, so that still wants doing before anyone gets excited. Bradley Morgan (7): arm64: hibernate: pass HVC_SET_VECTORS args to the resume hvc arm64: head: correct comment for init_kernel_el() arm64: hibernate: free MTE tag pages after saving arm64: hibernate: fix _cpu_resume() calling convention arm64: hibernate: use dcache_by_myline_op arm64: hibernate: only clean to PoC arm64: hibernate: use regular cpu_resume() logic arch/arm64/include/asm/suspend.h | 1 - arch/arm64/kernel/head.S | 6 +-- arch/arm64/kernel/hibernate-asm.S | 87 +++++++++++++++++++------------ arch/arm64/kernel/hibernate.c | 66 +++++++++++------------ arch/arm64/kernel/sleep.S | 6 +-- 5 files changed, 88 insertions(+), 78 deletions(-) -- 2.47.3
--- Thanks!https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@grrlz.net/ (local)