diff options
| author | Bradley Morgan <include@grrlz.net> | 2026-08-09 21:36:15 +0000 |
|---|---|---|
| committer | Will Deacon <will@kernel.org> | 2026-09-09 12:51:20 +0000 |
| commit | 955d86e5f3b95b731991fdb84966c50b16314629 (patch) | |
| tree | b33cd49fb6a26c84185c57824f27ecf35d90a395 /tools/perf/python/stackcollapse.py | |
| parent | 5445d64199626974269fcdf347769ad44b0bb53b (diff) | |
| download | linux-next-955d86e5f3b95b731991fdb84966c50b16314629.tar.gz linux-next-955d86e5f3b95b731991fdb84966c50b16314629.zip | |
arm64: hibernate: pass HVC_SET_VECTORS args to the resume hvc
swsusp_arch_suspend_exit() reinstalls the restored kernel's hyp stub
vectors with an hvc, but never passes the arguments. x0 is not set to
HVC_SET_VECTORS and x1 is not set to the vector address, so the stub
dispatch falls through and returns without writing vbar_el2. EL2 is
left pointing at the trans_pgd copy of the vectors, a page that
swsusp_free() releases right after resume.
Set the arguments up the same way __hyp_set_vectors() does.
Without this fix, Vladimir was able to trigger a hang when resuming from
hibernation with CONFIG_PAGE_POISONING=y and page_poison=on.
Fixes: 788bfdd97434 ("arm64: trans_pgd: hibernate: Add trans_pgd_copy_el2_vectors")
Cc: stable@vger.kernel.org
Signed-off-by: Bradley Morgan <include@grrlz.net>
Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com>
Tested-by: Vladimir Murzin <vladimir.murzin@arm.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'tools/perf/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions
