Lines Matching full:csr

68 	struct loongarch_csrs *csr = vcpu->arch.csr;  in kvm_save_guest_pmu()  local
70 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PERFCNTR0); in kvm_save_guest_pmu()
71 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PERFCNTR1); in kvm_save_guest_pmu()
72 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PERFCNTR2); in kvm_save_guest_pmu()
73 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PERFCNTR3); in kvm_save_guest_pmu()
74 kvm_read_clear_hw_gcsr(csr, LOONGARCH_CSR_PERFCTRL0); in kvm_save_guest_pmu()
75 kvm_read_clear_hw_gcsr(csr, LOONGARCH_CSR_PERFCTRL1); in kvm_save_guest_pmu()
76 kvm_read_clear_hw_gcsr(csr, LOONGARCH_CSR_PERFCTRL2); in kvm_save_guest_pmu()
77 kvm_read_clear_hw_gcsr(csr, LOONGARCH_CSR_PERFCTRL3); in kvm_save_guest_pmu()
82 struct loongarch_csrs *csr = vcpu->arch.csr; in kvm_restore_guest_pmu() local
84 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PERFCNTR0); in kvm_restore_guest_pmu()
85 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PERFCNTR1); in kvm_restore_guest_pmu()
86 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PERFCNTR2); in kvm_restore_guest_pmu()
87 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PERFCNTR3); in kvm_restore_guest_pmu()
88 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PERFCTRL0); in kvm_restore_guest_pmu()
89 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PERFCTRL1); in kvm_restore_guest_pmu()
90 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PERFCTRL2); in kvm_restore_guest_pmu()
91 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PERFCTRL3); in kvm_restore_guest_pmu()
116 struct loongarch_csrs *csr = vcpu->arch.csr; in kvm_lose_pmu() local
131 val = kvm_read_sw_gcsr(csr, LOONGARCH_CSR_PERFCTRL0); in kvm_lose_pmu()
132 val |= kvm_read_sw_gcsr(csr, LOONGARCH_CSR_PERFCTRL1); in kvm_lose_pmu()
133 val |= kvm_read_sw_gcsr(csr, LOONGARCH_CSR_PERFCTRL2); in kvm_lose_pmu()
134 val |= kvm_read_sw_gcsr(csr, LOONGARCH_CSR_PERFCTRL3); in kvm_lose_pmu()
288 * Since it updates CSR.GSTAT used by kvm_flush_tlb_gpa(), in kvm_pre_enter_guest()
293 /* Clear KVM_LARCH_SWCSR_LATEST as CSR will change when enter guest */ in kvm_pre_enter_guest()
485 struct loongarch_csrs *csr = vcpu->arch.csr; in kvm_set_cpuid() local
491 cpuid = kvm_read_sw_gcsr(csr, LOONGARCH_CSR_CPUID); in kvm_set_cpuid()
524 kvm_write_sw_gcsr(csr, LOONGARCH_CSR_CPUID, val); in kvm_set_cpuid()
536 struct loongarch_csrs *csr = vcpu->arch.csr; in kvm_drop_cpuid() local
539 cpuid = kvm_read_sw_gcsr(csr, LOONGARCH_CSR_CPUID); in kvm_drop_cpuid()
548 kvm_write_sw_gcsr(csr, LOONGARCH_CSR_CPUID, KVM_MAX_PHYID); in kvm_drop_cpuid()
570 struct loongarch_csrs *csr = vcpu->arch.csr; in _kvm_getcsr() local
588 gintc = kvm_read_sw_gcsr(csr, LOONGARCH_CSR_GINTC) & 0xff; in _kvm_getcsr()
589 *val = kvm_read_sw_gcsr(csr, LOONGARCH_CSR_ESTAT) | (gintc << 2); in _kvm_getcsr()
594 * Get software CSR state since software state is consistent in _kvm_getcsr()
597 *val = kvm_read_sw_gcsr(csr, id); in _kvm_getcsr()
605 struct loongarch_csrs *csr = vcpu->arch.csr; in _kvm_setcsr() local
616 kvm_set_sw_gcsr(csr, LOONGARCH_CSR_GINTC, gintc); in _kvm_setcsr()
619 kvm_set_sw_gcsr(csr, LOONGARCH_CSR_ESTAT, gintc); in _kvm_setcsr()
624 kvm_write_sw_gcsr(csr, id, val); in _kvm_setcsr()
627 * After modifying the PMU CSR register value of the vcpu. in _kvm_setcsr()
633 val = kvm_read_sw_gcsr(csr, LOONGARCH_CSR_PERFCTRL0) | in _kvm_setcsr()
634 kvm_read_sw_gcsr(csr, LOONGARCH_CSR_PERFCTRL1) | in _kvm_setcsr()
635 kvm_read_sw_gcsr(csr, LOONGARCH_CSR_PERFCTRL2) | in _kvm_setcsr()
636 kvm_read_sw_gcsr(csr, LOONGARCH_CSR_PERFCTRL3); in _kvm_setcsr()
909 * Other CSR registers are cleared with function _kvm_setcsr(). in kvm_set_one_reg()
911 kvm_write_sw_gcsr(vcpu->arch.csr, LOONGARCH_CSR_GINTC, 0); in kvm_set_one_reg()
912 kvm_write_sw_gcsr(vcpu->arch.csr, LOONGARCH_CSR_ESTAT, 0); in kvm_set_one_reg()
1185 * Only software CSR should be modified in kvm_arch_vcpu_ioctl()
1187 * If any hardware CSR register is modified, vcpu_load/vcpu_put pair in kvm_arch_vcpu_ioctl()
1188 * should be used. Since CSR registers owns by this vcpu, if switch in kvm_arch_vcpu_ioctl()
1189 * to other vcpus, other vcpus need reload CSR registers. in kvm_arch_vcpu_ioctl()
1191 * If software CSR is modified, bit KVM_LARCH_HWCSR_USABLE should in kvm_arch_vcpu_ioctl()
1193 * aux_inuse flag and reload CSR registers form software. in kvm_arch_vcpu_ioctl()
1493 struct loongarch_csrs *csr; in kvm_arch_vcpu_create() local
1512 vcpu->arch.csr = kzalloc(sizeof(struct loongarch_csrs), GFP_KERNEL); in kvm_arch_vcpu_create()
1513 if (!vcpu->arch.csr) in kvm_arch_vcpu_create()
1535 csr = vcpu->arch.csr; in kvm_arch_vcpu_create()
1536 kvm_write_sw_gcsr(csr, LOONGARCH_CSR_CRMD, CSR_CRMD_DA); in kvm_arch_vcpu_create()
1539 kvm_write_sw_gcsr(csr, LOONGARCH_CSR_TMID, vcpu->vcpu_id); in kvm_arch_vcpu_create()
1540 kvm_write_sw_gcsr(csr, LOONGARCH_CSR_CPUID, KVM_MAX_PHYID); in kvm_arch_vcpu_create()
1543 csr->csrs[LOONGARCH_CSR_GINTC] = 0; in kvm_arch_vcpu_create()
1560 kfree(vcpu->arch.csr); in kvm_arch_vcpu_destroy()
1577 struct loongarch_csrs *csr = vcpu->arch.csr; in _kvm_vcpu_load() local
1607 /* Restore guest CSR registers */ in _kvm_vcpu_load()
1608 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_CRMD); in _kvm_vcpu_load()
1609 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PRMD); in _kvm_vcpu_load()
1610 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_EUEN); in _kvm_vcpu_load()
1611 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_MISC); in _kvm_vcpu_load()
1612 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_ECFG); in _kvm_vcpu_load()
1613 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_ERA); in _kvm_vcpu_load()
1614 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_BADV); in _kvm_vcpu_load()
1615 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_BADI); in _kvm_vcpu_load()
1616 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_EENTRY); in _kvm_vcpu_load()
1617 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBIDX); in _kvm_vcpu_load()
1618 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBEHI); in _kvm_vcpu_load()
1619 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBELO0); in _kvm_vcpu_load()
1620 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBELO1); in _kvm_vcpu_load()
1621 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_ASID); in _kvm_vcpu_load()
1622 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PGDL); in _kvm_vcpu_load()
1623 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PGDH); in _kvm_vcpu_load()
1624 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PWCTL0); in _kvm_vcpu_load()
1625 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_PWCTL1); in _kvm_vcpu_load()
1626 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_STLBPGSIZE); in _kvm_vcpu_load()
1627 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_RVACFG); in _kvm_vcpu_load()
1628 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_CPUID); in _kvm_vcpu_load()
1629 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS0); in _kvm_vcpu_load()
1630 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS1); in _kvm_vcpu_load()
1631 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS2); in _kvm_vcpu_load()
1632 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS3); in _kvm_vcpu_load()
1633 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS4); in _kvm_vcpu_load()
1634 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS5); in _kvm_vcpu_load()
1635 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS6); in _kvm_vcpu_load()
1636 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_KS7); in _kvm_vcpu_load()
1637 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TMID); in _kvm_vcpu_load()
1638 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_CNTC); in _kvm_vcpu_load()
1639 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRENTRY); in _kvm_vcpu_load()
1640 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRBADV); in _kvm_vcpu_load()
1641 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRERA); in _kvm_vcpu_load()
1642 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRSAVE); in _kvm_vcpu_load()
1643 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRELO0); in _kvm_vcpu_load()
1644 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRELO1); in _kvm_vcpu_load()
1645 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBREHI); in _kvm_vcpu_load()
1646 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_TLBRPRMD); in _kvm_vcpu_load()
1647 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_DMWIN0); in _kvm_vcpu_load()
1648 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_DMWIN1); in _kvm_vcpu_load()
1649 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_DMWIN2); in _kvm_vcpu_load()
1650 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_DMWIN3); in _kvm_vcpu_load()
1651 kvm_restore_hw_gcsr(csr, LOONGARCH_CSR_LLBCTL); in _kvm_vcpu_load()
1654 write_csr_gintc(csr->csrs[LOONGARCH_CSR_GINTC]); in _kvm_vcpu_load()
1681 struct loongarch_csrs *csr = vcpu->arch.csr; in _kvm_vcpu_put() local
1686 * Update CSR state from hardware if software CSR state is stale, in _kvm_vcpu_put()
1687 * most CSR registers are kept unchanged during process context in _kvm_vcpu_put()
1688 * switch except CSR registers like remaining timer tick value and in _kvm_vcpu_put()
1694 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_CRMD); in _kvm_vcpu_put()
1695 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PRMD); in _kvm_vcpu_put()
1696 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_EUEN); in _kvm_vcpu_put()
1697 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_MISC); in _kvm_vcpu_put()
1698 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_ECFG); in _kvm_vcpu_put()
1699 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_ERA); in _kvm_vcpu_put()
1700 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_BADV); in _kvm_vcpu_put()
1701 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_BADI); in _kvm_vcpu_put()
1702 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_EENTRY); in _kvm_vcpu_put()
1703 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBIDX); in _kvm_vcpu_put()
1704 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBEHI); in _kvm_vcpu_put()
1705 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBELO0); in _kvm_vcpu_put()
1706 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBELO1); in _kvm_vcpu_put()
1707 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_ASID); in _kvm_vcpu_put()
1708 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PGDL); in _kvm_vcpu_put()
1709 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PGDH); in _kvm_vcpu_put()
1710 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PWCTL0); in _kvm_vcpu_put()
1711 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PWCTL1); in _kvm_vcpu_put()
1712 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_STLBPGSIZE); in _kvm_vcpu_put()
1713 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_RVACFG); in _kvm_vcpu_put()
1714 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_CPUID); in _kvm_vcpu_put()
1715 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PRCFG1); in _kvm_vcpu_put()
1716 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PRCFG2); in _kvm_vcpu_put()
1717 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_PRCFG3); in _kvm_vcpu_put()
1718 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS0); in _kvm_vcpu_put()
1719 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS1); in _kvm_vcpu_put()
1720 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS2); in _kvm_vcpu_put()
1721 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS3); in _kvm_vcpu_put()
1722 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS4); in _kvm_vcpu_put()
1723 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS5); in _kvm_vcpu_put()
1724 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS6); in _kvm_vcpu_put()
1725 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_KS7); in _kvm_vcpu_put()
1726 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TMID); in _kvm_vcpu_put()
1727 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_CNTC); in _kvm_vcpu_put()
1728 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_LLBCTL); in _kvm_vcpu_put()
1729 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRENTRY); in _kvm_vcpu_put()
1730 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRBADV); in _kvm_vcpu_put()
1731 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRERA); in _kvm_vcpu_put()
1732 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRSAVE); in _kvm_vcpu_put()
1733 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRELO0); in _kvm_vcpu_put()
1734 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRELO1); in _kvm_vcpu_put()
1735 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBREHI); in _kvm_vcpu_put()
1736 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_TLBRPRMD); in _kvm_vcpu_put()
1737 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_DMWIN0); in _kvm_vcpu_put()
1738 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_DMWIN1); in _kvm_vcpu_put()
1739 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_DMWIN2); in _kvm_vcpu_put()
1740 kvm_save_hw_gcsr(csr, LOONGARCH_CSR_DMWIN3); in _kvm_vcpu_put()
1747 csr->csrs[LOONGARCH_CSR_GINTC] = read_csr_gintc(); in _kvm_vcpu_put()