Commit ca2e92dc authored by Yury Norov (NVIDIA)'s avatar Yury Norov (NVIDIA) Committed by Huacai Chen
Browse files

LoongArch: KVM: Simplify kvm_deliver_intr()



The function opencodes for_each_set_bit() macro, which makes it bulky.
Using the proper API makes all the housekeeping code going away.

Reviewed-by: default avatarBibo Mao <maobibo@loongson.cn>
Signed-off-by: default avatarYury Norov (NVIDIA) <yury.norov@gmail.com>
Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
parent 640f8424
Loading
Loading
Loading
Loading
+4 −21
Original line number Diff line number Diff line
@@ -83,28 +83,11 @@ void kvm_deliver_intr(struct kvm_vcpu *vcpu)
	unsigned long *pending = &vcpu->arch.irq_pending;
	unsigned long *pending_clr = &vcpu->arch.irq_clear;

	if (!(*pending) && !(*pending_clr))
		return;

	if (*pending_clr) {
		priority = __ffs(*pending_clr);
		while (priority <= INT_IPI) {
	for_each_set_bit(priority, pending_clr, INT_IPI + 1)
		kvm_irq_clear(vcpu, priority);
			priority = find_next_bit(pending_clr,
					BITS_PER_BYTE * sizeof(*pending_clr),
					priority + 1);
		}
	}

	if (*pending) {
		priority = __ffs(*pending);
		while (priority <= INT_IPI) {
	for_each_set_bit(priority, pending, INT_IPI + 1)
		kvm_irq_deliver(vcpu, priority);
			priority = find_next_bit(pending,
					BITS_PER_BYTE * sizeof(*pending),
					priority + 1);
		}
	}
}

int kvm_pending_timer(struct kvm_vcpu *vcpu)