On 05/06/2011 11:36 AM, Sasha Levin wrote: > On Fri, 2011-05-06 at 10:29 +0300, Pekka Enberg wrote: >> On Fri, May 6, 2011 at 10:26 AM, Sasha Levin <levinsasha928@xxxxxxxxx> wrote: >>> virtio-blk needs a block of 4 IRQs (currently - staticly defined). >>> Giving the initial IRQ of 15 causes breakage when adding more >>> than one device. >>> >>> Signed-off-by: Sasha Levin <levinsasha928@xxxxxxxxx> >> >> Can we make the allocation dynamic instead? AFAICT, it could be a simple as >> >> int kvm__request_irq(struct kvm *kvm) >> { >> return kvm->next_irq++; >> } >> >> that's done at device init time and then we'd just add "int irq" to >> the individual struct devices. >> >> Pekka > > afaik, we need to have same IRQ pins for devices which may have > different IRQ lines (All virtio-blk share same IRQ pin but different > line, I assume it'll be same with different virtio devices). > > So mptable has to manage association between device type and the > corresponding IRQ pin/line assignment, So dynamic assignment will be > more of a call with device type and return IRQ pin + line - which makes > it more complex than just allocating next free IRQ line. > Nod, making it dynamic force us to implement some kind of collector for pci devices, so that it would know pin/vector pair for every device. So in device init time we need to call kinda mptable_request_irq_pin() where we could "hint" allocator which pin and irq we need, and say "exclusive" flag which would tell allocator to fail if irq/pin already borrowed. The "hints" for every device might left hardcoded in some enum, for other irqs we might need pure dynamic vector allocator. -- Thanks, Cyrill -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html