]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
LoongArch: KVM: Set host with kernel mode when switch to VM mode
authorBibo Mao <maobibo@loongson.cn>
Thu, 13 Feb 2025 04:02:56 +0000 (12:02 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Thu, 13 Feb 2025 04:02:56 +0000 (12:02 +0800)
PRMD register is only meaningful on the beginning stage of exception
entry, and it is overwritten with nested irq or exception.

When CPU runs in VM mode, interrupt need be enabled on host. And the
mode for host had better be kernel mode rather than random or user mode.

When VM is running, the running mode with top command comes from CRMD
register, and running mode should be kernel mode since kernel function
is executing with perf command. It needs be consistent with both top and
perf command.

Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/kvm/switch.S

index 0c292f81849277178110a94f09e6b37e90d0dae6..1be185e948072394902cfa0c3dae3a55c1bb3a90 100644 (file)
@@ -85,7 +85,7 @@
         * Guest CRMD comes from separate GCSR_CRMD register
         */
        ori     t0, zero, CSR_PRMD_PIE
-       csrxchg t0, t0,   LOONGARCH_CSR_PRMD
+       csrwr   t0, LOONGARCH_CSR_PRMD
 
        /* Set PVM bit to setup ertn to guest context */
        ori     t0, zero, CSR_GSTAT_PVM