Lines Matching full:eiointc

301 	struct loongarch_eiointc *eiointc = vcpu->kvm->arch.eiointc;  in kvm_eiointc_read()  local
303 if (!eiointc) { in kvm_eiointc_read()
304 kvm_err("%s: eiointc irqchip not valid!\n", __func__); in kvm_eiointc_read()
309 spin_lock_irqsave(&eiointc->lock, flags); in kvm_eiointc_read()
312 ret = loongarch_eiointc_readb(vcpu, eiointc, addr, len, val); in kvm_eiointc_read()
315 ret = loongarch_eiointc_readw(vcpu, eiointc, addr, len, val); in kvm_eiointc_read()
318 ret = loongarch_eiointc_readl(vcpu, eiointc, addr, len, val); in kvm_eiointc_read()
321 ret = loongarch_eiointc_readq(vcpu, eiointc, addr, len, val); in kvm_eiointc_read()
327 spin_unlock_irqrestore(&eiointc->lock, flags); in kvm_eiointc_read()
675 struct loongarch_eiointc *eiointc = vcpu->kvm->arch.eiointc; in kvm_eiointc_write() local
677 if (!eiointc) { in kvm_eiointc_write()
678 kvm_err("%s: eiointc irqchip not valid!\n", __func__); in kvm_eiointc_write()
683 spin_lock_irqsave(&eiointc->lock, flags); in kvm_eiointc_write()
686 ret = loongarch_eiointc_writeb(vcpu, eiointc, addr, len, val); in kvm_eiointc_write()
689 ret = loongarch_eiointc_writew(vcpu, eiointc, addr, len, val); in kvm_eiointc_write()
692 ret = loongarch_eiointc_writel(vcpu, eiointc, addr, len, val); in kvm_eiointc_write()
695 ret = loongarch_eiointc_writeq(vcpu, eiointc, addr, len, val); in kvm_eiointc_write()
701 spin_unlock_irqrestore(&eiointc->lock, flags); in kvm_eiointc_write()
717 struct loongarch_eiointc *eiointc = vcpu->kvm->arch.eiointc; in kvm_eiointc_virt_read() local
719 if (!eiointc) { in kvm_eiointc_virt_read()
720 kvm_err("%s: eiointc irqchip not valid!\n", __func__); in kvm_eiointc_virt_read()
725 spin_lock_irqsave(&eiointc->lock, flags); in kvm_eiointc_virt_read()
728 *data = eiointc->features; in kvm_eiointc_virt_read()
731 *data = eiointc->status; in kvm_eiointc_virt_read()
736 spin_unlock_irqrestore(&eiointc->lock, flags); in kvm_eiointc_virt_read()
748 struct loongarch_eiointc *eiointc = vcpu->kvm->arch.eiointc; in kvm_eiointc_virt_write() local
750 if (!eiointc) { in kvm_eiointc_virt_write()
751 kvm_err("%s: eiointc irqchip not valid!\n", __func__); in kvm_eiointc_virt_write()
756 spin_lock_irqsave(&eiointc->lock, flags); in kvm_eiointc_virt_write()
763 * eiointc features can only be set at disabled status in kvm_eiointc_virt_write()
765 if ((eiointc->status & BIT(EIOINTC_ENABLE)) && value) { in kvm_eiointc_virt_write()
769 eiointc->status = value & eiointc->features; in kvm_eiointc_virt_write()
774 spin_unlock_irqrestore(&eiointc->lock, flags); in kvm_eiointc_virt_write()
792 struct loongarch_eiointc *s = dev->kvm->arch.eiointc; in kvm_eiointc_ctrl_access()
833 s = dev->kvm->arch.eiointc; in kvm_eiointc_regs_access()
868 kvm_err("%s: unknown eiointc register, addr = %d\n", __func__, addr); in kvm_eiointc_regs_access()
895 s = dev->kvm->arch.eiointc; in kvm_eiointc_sw_status_access()
911 kvm_err("%s: unknown eiointc register, addr = %d\n", __func__, addr); in kvm_eiointc_sw_status_access()
962 /* eiointc has been created */ in kvm_eiointc_create()
963 if (kvm->arch.eiointc) in kvm_eiointc_create()
996 kvm->arch.eiointc = s; in kvm_eiointc_create()
1004 struct loongarch_eiointc *eiointc; in kvm_eiointc_destroy() local
1006 if (!dev || !dev->kvm || !dev->kvm->arch.eiointc) in kvm_eiointc_destroy()
1010 eiointc = kvm->arch.eiointc; in kvm_eiointc_destroy()
1011 kvm_io_bus_unregister_dev(kvm, KVM_IOCSR_BUS, &eiointc->device); in kvm_eiointc_destroy()
1012 kvm_io_bus_unregister_dev(kvm, KVM_IOCSR_BUS, &eiointc->device_vext); in kvm_eiointc_destroy()
1013 kfree(eiointc); in kvm_eiointc_destroy()
1017 .name = "kvm-loongarch-eiointc",