Messages in this thread | | | Date | Thu, 18 Nov 2010 15:20:27 +0200 | From | "Michael S. Tsirkin" <> | Subject | Re: [PATCH RFC] kvm: fast-path msi injection with irqfd |
| |
On Thu, Nov 18, 2010 at 03:14:53PM +0200, Gleb Natapov wrote: > On Thu, Nov 18, 2010 at 03:03:37PM +0200, Michael S. Tsirkin wrote: > > > >+static inline void kvm_irq_routing_update(struct kvm *kvm, > > > >+ struct kvm_irq_routing_table *irq_rt) > > > >+{ > > > >+ rcu_assign_pointer(kvm->irq_routing, irq_rt); > > > >+} > > > >+ > > > > static inline int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) > > > > { > > > > return -ENOSYS; > > > > > > Apart from these minor issues, looks good. > > > > > > Something we should consider improving is the loop over all VCPUs that > > kvm_irq_delivery_to_apic invokes. I think that (for non-broadcast > > interrupts) it should be possible to precompute an store the CPU > > in question as part of the routing entry. > > > > Something for a separate patch ... comments? > > > I do not think this info should be part of routing entry. Routing entry > is more about describing wires on the board.
Not for msi. kvm_kernel_irq_routing_entry seems to just keep an address/data pair in that case. So
union { struct { unsigned irqchip; unsigned pin; } irqchip; struct msi_msg msi; };
would become
union { struct { unsigned irqchip; unsigned pin; } irqchip; struct { struct msi_msg msi; struct kvm_vpcu *dest; } msi; };
or something like this.
> Other then that > this is a good idea that, IIRC, we already discussed once. > > -- > Gleb.
| |