]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
LoongArch: Save and restore CSR.CNTC for hibernation
authorHuacai Chen <chenhuacai@loongson.cn>
Wed, 14 May 2025 14:17:52 +0000 (22:17 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 May 2025 12:12:19 +0000 (14:12 +0200)
commite89bd983f3cdd1064d1c41aa596bbe1ae074d3dd
tree3dd0f7ddf607018f70f5c205945be3fd60d25b2f
parentf4c0a7999fb599d653a5ae37625d449a47ced153
LoongArch: Save and restore CSR.CNTC for hibernation

commit ceb9155d058a11242aa0572875c44e9713b1a2be upstream.

Save and restore CSR.CNTC for hibernation which is similar to suspend.

For host this is unnecessary because sched clock is ensured continuous,
but for kvm guest sched clock isn't enough because rdtime.d should also
be continuous.

Host::rdtime.d = Host::CSR.CNTC + counter
Guest::rdtime.d = Host::CSR.CNTC + Host::CSR.GCNTC + Guest::CSR.CNTC + counter

so,

Guest::rdtime.d = Host::rdtime.d + Host::CSR.GCNTC + Guest::CSR.CNTC

To ensure Guest::rdtime.d continuous, Host::rdtime.d should be at first
continuous, while Host::CSR.GCNTC / Guest::CSR.CNTC is maintained by KVM.

Cc: stable@vger.kernel.org
Signed-off-by: Xianglai Li <lixianglai@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/loongarch/kernel/time.c
arch/loongarch/power/hibernate.c