mirror of https://github.com/xemu-project/xemu.git
KVM: Pass EventNotifier into kvm_irqchip_assign_irqfd
So that kvm_irqchip_assign_irqfd() can have access to the EventNotifiers, especially the resample event. It is needed in follow up patch to cache and kick resamplefds from QEMU. Reviewed-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <20200318145204.74483-4-peterx@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
97a3757616
commit
ff66ba87ba
|
@ -1662,9 +1662,13 @@ int kvm_irqchip_update_msi_route(KVMState *s, int virq, MSIMessage msg,
|
||||||
return kvm_update_routing_entry(s, &kroute);
|
return kvm_update_routing_entry(s, &kroute);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int kvm_irqchip_assign_irqfd(KVMState *s, int fd, int rfd, int virq,
|
static int kvm_irqchip_assign_irqfd(KVMState *s, EventNotifier *event,
|
||||||
|
EventNotifier *resample, int virq,
|
||||||
bool assign)
|
bool assign)
|
||||||
{
|
{
|
||||||
|
int fd = event_notifier_get_fd(event);
|
||||||
|
int rfd = resample ? event_notifier_get_fd(resample) : -1;
|
||||||
|
|
||||||
struct kvm_irqfd irqfd = {
|
struct kvm_irqfd irqfd = {
|
||||||
.fd = fd,
|
.fd = fd,
|
||||||
.gsi = virq,
|
.gsi = virq,
|
||||||
|
@ -1769,7 +1773,9 @@ int kvm_irqchip_add_hv_sint_route(KVMState *s, uint32_t vcpu, uint32_t sint)
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int kvm_irqchip_assign_irqfd(KVMState *s, int fd, int virq, bool assign)
|
static int kvm_irqchip_assign_irqfd(KVMState *s, EventNotifier *event,
|
||||||
|
EventNotifier *resample, int virq,
|
||||||
|
bool assign)
|
||||||
{
|
{
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
@ -1783,15 +1789,13 @@ int kvm_irqchip_update_msi_route(KVMState *s, int virq, MSIMessage msg)
|
||||||
int kvm_irqchip_add_irqfd_notifier_gsi(KVMState *s, EventNotifier *n,
|
int kvm_irqchip_add_irqfd_notifier_gsi(KVMState *s, EventNotifier *n,
|
||||||
EventNotifier *rn, int virq)
|
EventNotifier *rn, int virq)
|
||||||
{
|
{
|
||||||
return kvm_irqchip_assign_irqfd(s, event_notifier_get_fd(n),
|
return kvm_irqchip_assign_irqfd(s, n, rn, virq, true);
|
||||||
rn ? event_notifier_get_fd(rn) : -1, virq, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int kvm_irqchip_remove_irqfd_notifier_gsi(KVMState *s, EventNotifier *n,
|
int kvm_irqchip_remove_irqfd_notifier_gsi(KVMState *s, EventNotifier *n,
|
||||||
int virq)
|
int virq)
|
||||||
{
|
{
|
||||||
return kvm_irqchip_assign_irqfd(s, event_notifier_get_fd(n), -1, virq,
|
return kvm_irqchip_assign_irqfd(s, n, NULL, virq, false);
|
||||||
false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int kvm_irqchip_add_irqfd_notifier(KVMState *s, EventNotifier *n,
|
int kvm_irqchip_add_irqfd_notifier(KVMState *s, EventNotifier *n,
|
||||||
|
|
Loading…
Reference in New Issue