diff --git a/arch/loongarch/kvm/csr.c b/arch/loongarch/kvm/csr.c index 09ec781fe79aeeed4759be818f450157bf7fe602..0c42cbb9c739c3220983bb37ba0a2651709c6420 100644 --- a/arch/loongarch/kvm/csr.c +++ b/arch/loongarch/kvm/csr.c @@ -347,8 +347,6 @@ static int kvm_iocsr_common_set(struct kvm_run *run, struct kvm_vcpu *vcpu, static int kvm_misc_set(struct kvm_run *run, struct kvm_vcpu *vcpu, u32 addr, u64 val) { - if ((val & KVM_IOCSRF_MISC_FUNC_EXT_IOI_EN) && vcpu->vcpu_id == 0) - kvm_setup_ls3a_extirq(vcpu->kvm); return kvm_iocsr_common_set(run, vcpu, addr, val); } @@ -653,9 +651,6 @@ int _kvm_set_iocsr(struct kvm *kvm, struct kvm_iocsr_entry *__user argp) } spin_unlock(&kvm->arch.iocsr_lock); - if (tmp.addr == KVM_IOCSR_MISC_FUNC) - kvm_enable_ls3a_extirq(kvm, tmp.data & KVM_IOCSRF_MISC_FUNC_EXT_IOI_EN); - out: return r; } diff --git a/arch/loongarch/kvm/intc/ls3a_ext_irq.c b/arch/loongarch/kvm/intc/ls3a_ext_irq.c index 33e8b45a3532a780e6889ce842890e2b49cd35d0..ad612661d36bf9107b62f39f60ede3e16c77c30e 100644 --- a/arch/loongarch/kvm/intc/ls3a_ext_irq.c +++ b/arch/loongarch/kvm/intc/ls3a_ext_irq.c @@ -110,9 +110,6 @@ void msi_irq_handler(struct kvm *kvm, int irq, int level) struct ls3a_kvm_extirq *s = ls3a_ext_irqchip(kvm); struct kvm_ls3a_extirq_state *state = &(s->ls3a_ext_irq); - if (!atomic64_read(&s->enabled)) - return; - kvm_debug("ext_irq_handler:irq = %d,level = %d\n", irq, level); ls3a_ext_irq_lock(s, flags); @@ -731,7 +728,6 @@ int kvm_create_ls3a_ext_irq(struct kvm *kvm) memset((void *)&s->ls3a_ext_irq, 0x0, sizeof(struct kvm_ls3a_extirq_state)); spin_lock_init(&s->lock); - atomic64_set(&s->enabled, 0); s->kvm = kvm; /* @@ -872,18 +868,6 @@ int kvm_setup_ls3a_extirq(struct kvm *kvm) memset(extirq_state, 0, sizeof(struct kvm_ls3a_extirq_state)); ls3a_ext_irq_unlock(v_extirq, flags); - atomic64_set(&v_extirq->enabled, 1); - - return 0; -} - -int kvm_enable_ls3a_extirq(struct kvm *kvm, bool enable) -{ - struct ls3a_kvm_extirq *v_extirq = ls3a_ext_irqchip(kvm); - - if (v_extirq) - atomic64_set(&v_extirq->enabled, enable); - return 0; } @@ -891,7 +875,7 @@ void kvm_dump_ls3a_extirq_state(struct seq_file *s, struct ls3a_kvm_extirq *irqchip) { struct kvm_ls3a_extirq_state *extirq; - int i = 0, j = 0; + int i, j = 0; unsigned long flags; seq_puts(s, "LS3A ext irqchip state:\n"); @@ -901,8 +885,7 @@ void kvm_dump_ls3a_extirq_state(struct seq_file *s, extirq = &(irqchip->ls3a_ext_irq); ls3a_ext_irq_lock(irqchip, flags); - i = (int)atomic64_read(&irqchip->enabled); - seq_printf(s, "ext irq enabled:%d", i); + seq_puts(s, "ext irq enabled"); seq_puts(s, "\nenabled:(Not Enabled)"); for (i = 0; i < EXTIOI_IRQS; i++) { if (!test_bit(i, (void *)&extirq->ext_en)) diff --git a/arch/loongarch/kvm/intc/ls3a_ext_irq.h b/arch/loongarch/kvm/intc/ls3a_ext_irq.h index 62fa06239b2811e44a02e8f549fa9ef535e7acaa..f834527b137099fe5bcc07d836746b8bbb160449 100644 --- a/arch/loongarch/kvm/intc/ls3a_ext_irq.h +++ b/arch/loongarch/kvm/intc/ls3a_ext_irq.h @@ -98,7 +98,6 @@ typedef struct kvm_ls3a_extirq_state { struct ls3a_kvm_extirq { spinlock_t lock; struct kvm *kvm; - atomic64_t enabled; struct kvm_io_device device; struct kvm_ls3a_extirq_state ls3a_ext_irq; }; @@ -126,6 +125,5 @@ int kvm_set_ls3a_extirq(struct kvm *kvm, void kvm_destroy_ls3a_ext_irq(struct kvm *kvm); void msi_irq_handler(struct kvm *kvm, int irq, int level); int kvm_setup_ls3a_extirq(struct kvm *kvm); -int kvm_enable_ls3a_extirq(struct kvm *kvm, bool enable); void kvm_dump_ls3a_extirq_state(struct seq_file *m, struct ls3a_kvm_extirq *irqchip); #endif diff --git a/arch/loongarch/kvm/loongarch.c b/arch/loongarch/kvm/loongarch.c index 9e0dc6a4e6e2945ef08a929bda1272cbd96a55aa..9cd0d002710fa7885dc5f8bedca28c03d9f8ef42 100644 --- a/arch/loongarch/kvm/loongarch.c +++ b/arch/loongarch/kvm/loongarch.c @@ -973,7 +973,7 @@ static int _kvm_set_one_reg(struct kvm_vcpu *vcpu, case KVM_REG_LOONGARCH_VCPU_RESET: kvm_reset_timer(vcpu); if (vcpu->vcpu_id == 0) - kvm_enable_ls3a_extirq(vcpu->kvm, false); + kvm_setup_ls3a_extirq(vcpu->kvm); memset(&vcpu->arch.irq_pending, 0, sizeof(vcpu->arch.irq_pending)); memset(&vcpu->arch.irq_clear, 0, sizeof(vcpu->arch.irq_clear));