|
@@ -62,12 +62,14 @@ int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi)
|
|
{
|
|
{
|
|
struct kvm_kernel_irq_routing_entry route;
|
|
struct kvm_kernel_irq_routing_entry route;
|
|
|
|
|
|
- if (!irqchip_in_kernel(kvm) || msi->flags != 0)
|
|
|
|
|
|
+ if (!irqchip_in_kernel(kvm) || (msi->flags & ~KVM_MSI_VALID_DEVID))
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
|
|
|
|
route.msi.address_lo = msi->address_lo;
|
|
route.msi.address_lo = msi->address_lo;
|
|
route.msi.address_hi = msi->address_hi;
|
|
route.msi.address_hi = msi->address_hi;
|
|
route.msi.data = msi->data;
|
|
route.msi.data = msi->data;
|
|
|
|
+ route.msi.flags = msi->flags;
|
|
|
|
+ route.msi.devid = msi->devid;
|
|
|
|
|
|
return kvm_set_msi(&route, kvm, KVM_USERSPACE_IRQ_SOURCE_ID, 1, false);
|
|
return kvm_set_msi(&route, kvm, KVM_USERSPACE_IRQ_SOURCE_ID, 1, false);
|
|
}
|
|
}
|