Skip to content

Commit a2b0773

Browse files
bonzinirkrcmar
authored andcommitted
kvm: x86: merge kvm_arch_set_irq and kvm_arch_set_irq_inatomic
kvm_arch_set_irq is unused since commit b97e6de. Merge its functionality with kvm_arch_set_irq_inatomic. Reported-by: Jiang Biao <jiang.biao2@zte.com.cn> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
1 parent 7301d6a commit a2b0773

1 file changed

Lines changed: 27 additions & 31 deletions

File tree

arch/x86/kvm/irq_comm.c

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -156,25 +156,43 @@ int kvm_set_msi(struct kvm_kernel_irq_routing_entry *e,
156156
}
157157

158158

159+
static int kvm_hv_set_sint(struct kvm_kernel_irq_routing_entry *e,
160+
struct kvm *kvm, int irq_source_id, int level,
161+
bool line_status)
162+
{
163+
if (!level)
164+
return -1;
165+
166+
return kvm_hv_synic_set_irq(kvm, e->hv_sint.vcpu, e->hv_sint.sint);
167+
}
168+
159169
int kvm_arch_set_irq_inatomic(struct kvm_kernel_irq_routing_entry *e,
160170
struct kvm *kvm, int irq_source_id, int level,
161171
bool line_status)
162172
{
163173
struct kvm_lapic_irq irq;
164174
int r;
165175

166-
if (unlikely(e->type != KVM_IRQ_ROUTING_MSI))
167-
return -EWOULDBLOCK;
176+
switch (e->type) {
177+
case KVM_IRQ_ROUTING_HV_SINT:
178+
return kvm_hv_set_sint(e, kvm, irq_source_id, level,
179+
line_status);
168180

169-
if (kvm_msi_route_invalid(kvm, e))
170-
return -EINVAL;
181+
case KVM_IRQ_ROUTING_MSI:
182+
if (kvm_msi_route_invalid(kvm, e))
183+
return -EINVAL;
171184

172-
kvm_set_msi_irq(kvm, e, &irq);
185+
kvm_set_msi_irq(kvm, e, &irq);
173186

174-
if (kvm_irq_delivery_to_apic_fast(kvm, NULL, &irq, &r, NULL))
175-
return r;
176-
else
177-
return -EWOULDBLOCK;
187+
if (kvm_irq_delivery_to_apic_fast(kvm, NULL, &irq, &r, NULL))
188+
return r;
189+
break;
190+
191+
default:
192+
break;
193+
}
194+
195+
return -EWOULDBLOCK;
178196
}
179197

180198
int kvm_request_irq_source_id(struct kvm *kvm)
@@ -254,16 +272,6 @@ void kvm_fire_mask_notifiers(struct kvm *kvm, unsigned irqchip, unsigned pin,
254272
srcu_read_unlock(&kvm->irq_srcu, idx);
255273
}
256274

257-
static int kvm_hv_set_sint(struct kvm_kernel_irq_routing_entry *e,
258-
struct kvm *kvm, int irq_source_id, int level,
259-
bool line_status)
260-
{
261-
if (!level)
262-
return -1;
263-
264-
return kvm_hv_synic_set_irq(kvm, e->hv_sint.vcpu, e->hv_sint.sint);
265-
}
266-
267275
int kvm_set_routing_entry(struct kvm *kvm,
268276
struct kvm_kernel_irq_routing_entry *e,
269277
const struct kvm_irq_routing_entry *ue)
@@ -423,18 +431,6 @@ void kvm_scan_ioapic_routes(struct kvm_vcpu *vcpu,
423431
srcu_read_unlock(&kvm->irq_srcu, idx);
424432
}
425433

426-
int kvm_arch_set_irq(struct kvm_kernel_irq_routing_entry *irq, struct kvm *kvm,
427-
int irq_source_id, int level, bool line_status)
428-
{
429-
switch (irq->type) {
430-
case KVM_IRQ_ROUTING_HV_SINT:
431-
return kvm_hv_set_sint(irq, kvm, irq_source_id, level,
432-
line_status);
433-
default:
434-
return -EWOULDBLOCK;
435-
}
436-
}
437-
438434
void kvm_arch_irq_routing_update(struct kvm *kvm)
439435
{
440436
kvm_hv_irq_routing_update(kvm);

0 commit comments

Comments
 (0)