]> www.infradead.org Git - users/jedix/linux-maple.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)
committerHuacai Chen <chenhuacai@loongson.cn>
Wed, 14 May 2025 14:17:52 +0000 (22:17 +0800)
commitceb9155d058a11242aa0572875c44e9713b1a2be
treee3931bb30e4148a0457fef67135a85abc214a045
parent3e245b7b74c3a2ead5fa4bad27cc275284c75189
LoongArch: Save and restore CSR.CNTC for hibernation

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>
arch/loongarch/kernel/time.c
arch/loongarch/power/hibernate.c