Lines Matching full:csr
104 /* Clear KVM_LARCH_SWCSR_LATEST as CSR will change when enter guest */ in kvm_pre_enter_guest()
256 struct loongarch_csrs *csr = vcpu->arch.csr; in _kvm_getcsr() local
263 gintc = kvm_read_sw_gcsr(csr, LOONGARCH_CSR_GINTC) & 0xff; in _kvm_getcsr()
264 *val = kvm_read_sw_gcsr(csr, LOONGARCH_CSR_ESTAT) | (gintc << 2); in _kvm_getcsr()
269 * Get software CSR state since software state is consistent in _kvm_getcsr()
272 *val = kvm_read_sw_gcsr(csr, id); in _kvm_getcsr()
280 struct loongarch_csrs *csr = vcpu->arch.csr; in _kvm_setcsr() local
288 kvm_set_sw_gcsr(csr, LOONGARCH_CSR_GINTC, gintc); in _kvm_setcsr()
291 kvm_set_sw_gcsr(csr, LOONGARCH_CSR_ESTAT, gintc); in _kvm_setcsr()
296 kvm_write_sw_gcsr(csr, id, val); in _kvm_setcsr()
624 * Only software CSR should be modified in kvm_arch_vcpu_ioctl()
626 * If any hardware CSR register is modified, vcpu_load/vcpu_put pair in kvm_arch_vcpu_ioctl()
627 * should be used. Since CSR registers owns by this vcpu, if switch in kvm_arch_vcpu_ioctl()
628 * to other vcpus, other vcpus need reload CSR registers. in kvm_arch_vcpu_ioctl()
630 * If software CSR is modified, bit KVM_LARCH_HWCSR_USABLE should in kvm_arch_vcpu_ioctl()
632 * aux_inuse flag and reload CSR registers form software. in kvm_arch_vcpu_ioctl()
874 struct loongarch_csrs *csr; in kvm_arch_vcpu_create() local
883 vcpu->arch.csr = kzalloc(sizeof(struct loongarch_csrs), GFP_KERNEL); in kvm_arch_vcpu_create()
884 if (!vcpu->arch.csr) in kvm_arch_vcpu_create()
903 csr = vcpu->arch.csr; in kvm_arch_vcpu_create()
904 kvm_write_sw_gcsr(csr, LOONGARCH_CSR_CRMD, CSR_CRMD_DA); in kvm_arch_vcpu_create()
907 kvm_write_sw_gcsr(csr, LOONGARCH_CSR_TMID, vcpu->vcpu_id); in kvm_arch_vcpu_create()
910 csr->csrs[LOONGARCH_CSR_GINTC] = 0; in kvm_arch_vcpu_create()
926 kfree(vcpu->arch.csr); in kvm_arch_vcpu_destroy()
943 struct loongarch_csrs *csr = vcpu->arch.csr; in _kvm_vcpu_load() local
972 /* Restore guest CSR registers */ in _kvm_vcpu_load()
973 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_CRMD); in _kvm_vcpu_load()
974 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PRMD); in _kvm_vcpu_load()
975 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_EUEN); in _kvm_vcpu_load()
976 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_MISC); in _kvm_vcpu_load()
977 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_ECFG); in _kvm_vcpu_load()
978 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_ERA); in _kvm_vcpu_load()
979 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_BADV); in _kvm_vcpu_load()
980 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_BADI); in _kvm_vcpu_load()
981 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_EENTRY); in _kvm_vcpu_load()
982 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBIDX); in _kvm_vcpu_load()
983 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBEHI); in _kvm_vcpu_load()
984 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBELO0); in _kvm_vcpu_load()
985 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBELO1); in _kvm_vcpu_load()
986 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_ASID); in _kvm_vcpu_load()
987 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PGDL); in _kvm_vcpu_load()
988 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PGDH); in _kvm_vcpu_load()
989 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PWCTL0); in _kvm_vcpu_load()
990 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PWCTL1); in _kvm_vcpu_load()
991 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_STLBPGSIZE); in _kvm_vcpu_load()
992 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_RVACFG); in _kvm_vcpu_load()
993 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_CPUID); in _kvm_vcpu_load()
994 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS0); in _kvm_vcpu_load()
995 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS1); in _kvm_vcpu_load()
996 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS2); in _kvm_vcpu_load()
997 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS3); in _kvm_vcpu_load()
998 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS4); in _kvm_vcpu_load()
999 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS5); in _kvm_vcpu_load()
1000 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS6); in _kvm_vcpu_load()
1001 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS7); in _kvm_vcpu_load()
1002 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TMID); in _kvm_vcpu_load()
1003 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_CNTC); in _kvm_vcpu_load()
1004 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRENTRY); in _kvm_vcpu_load()
1005 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRBADV); in _kvm_vcpu_load()
1006 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRERA); in _kvm_vcpu_load()
1007 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRSAVE); in _kvm_vcpu_load()
1008 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRELO0); in _kvm_vcpu_load()
1009 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRELO1); in _kvm_vcpu_load()
1010 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBREHI); in _kvm_vcpu_load()
1011 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRPRMD); in _kvm_vcpu_load()
1012 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_DMWIN0); in _kvm_vcpu_load()
1013 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_DMWIN1); in _kvm_vcpu_load()
1014 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_DMWIN2); in _kvm_vcpu_load()
1015 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_DMWIN3); in _kvm_vcpu_load()
1016 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_LLBCTL); in _kvm_vcpu_load()
1019 write_csr_gintc(csr->csrs[LOONGARCH_CSR_GINTC]); in _kvm_vcpu_load()
1046 struct loongarch_csrs *csr = vcpu->arch.csr; in _kvm_vcpu_put() local
1051 * Update CSR state from hardware if software CSR state is stale, in _kvm_vcpu_put()
1052 * most CSR registers are kept unchanged during process context in _kvm_vcpu_put()
1053 * switch except CSR registers like remaining timer tick value and in _kvm_vcpu_put()
1059 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_CRMD); in _kvm_vcpu_put()
1060 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PRMD); in _kvm_vcpu_put()
1061 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_EUEN); in _kvm_vcpu_put()
1062 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_MISC); in _kvm_vcpu_put()
1063 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_ECFG); in _kvm_vcpu_put()
1064 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_ERA); in _kvm_vcpu_put()
1065 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_BADV); in _kvm_vcpu_put()
1066 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_BADI); in _kvm_vcpu_put()
1067 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_EENTRY); in _kvm_vcpu_put()
1068 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBIDX); in _kvm_vcpu_put()
1069 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBEHI); in _kvm_vcpu_put()
1070 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBELO0); in _kvm_vcpu_put()
1071 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBELO1); in _kvm_vcpu_put()
1072 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_ASID); in _kvm_vcpu_put()
1073 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PGDL); in _kvm_vcpu_put()
1074 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PGDH); in _kvm_vcpu_put()
1075 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PWCTL0); in _kvm_vcpu_put()
1076 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PWCTL1); in _kvm_vcpu_put()
1077 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_STLBPGSIZE); in _kvm_vcpu_put()
1078 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_RVACFG); in _kvm_vcpu_put()
1079 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_CPUID); in _kvm_vcpu_put()
1080 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PRCFG1); in _kvm_vcpu_put()
1081 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PRCFG2); in _kvm_vcpu_put()
1082 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PRCFG3); in _kvm_vcpu_put()
1083 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS0); in _kvm_vcpu_put()
1084 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS1); in _kvm_vcpu_put()
1085 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS2); in _kvm_vcpu_put()
1086 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS3); in _kvm_vcpu_put()
1087 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS4); in _kvm_vcpu_put()
1088 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS5); in _kvm_vcpu_put()
1089 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS6); in _kvm_vcpu_put()
1090 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS7); in _kvm_vcpu_put()
1091 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TMID); in _kvm_vcpu_put()
1092 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_CNTC); in _kvm_vcpu_put()
1093 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_LLBCTL); in _kvm_vcpu_put()
1094 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRENTRY); in _kvm_vcpu_put()
1095 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRBADV); in _kvm_vcpu_put()
1096 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRERA); in _kvm_vcpu_put()
1097 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRSAVE); in _kvm_vcpu_put()
1098 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRELO0); in _kvm_vcpu_put()
1099 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRELO1); in _kvm_vcpu_put()
1100 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBREHI); in _kvm_vcpu_put()
1101 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRPRMD); in _kvm_vcpu_put()
1102 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_DMWIN0); in _kvm_vcpu_put()
1103 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_DMWIN1); in _kvm_vcpu_put()
1104 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_DMWIN2); in _kvm_vcpu_put()
1105 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_DMWIN3); in _kvm_vcpu_put()
1112 csr->csrs[LOONGARCH_CSR_GINTC] = read_csr_gintc(); in _kvm_vcpu_put()