[PATCH]: Staging: hv: Allocate the vmbus irq dynamically
kys at microsoft.com
Sun Feb 20 19:43:58 PST 2011
> -----Original Message-----
> From: Thomas Gleixner [mailto:tglx at linutronix.de]
> Sent: Sunday, February 20, 2011 11:16 AM
> To: KY Srinivasan
> Cc: gregkh at suse.de; linux-kernel at vger.kernel.org;
> devel at linuxdriverproject.org; virtualization at lists.osdl.org; Haiyang Zhang; Hank
> Subject: RE: [PATCH]: Staging: hv: Allocate the vmbus irq dynamically
> On Sat, 19 Feb 2011, KY Srinivasan wrote:
> > > When grabbing some random irq from the PIC is not an issue, then
> > > what's the point of this probing, retry loop and the comments about
> > > racing ? What races here? That does not make sense at all.
> > Like most virtualization platforms, Hyper-V also emulates the full PC
> > platform. So, it is possible that the driver of some other emulated
> > devices might register for the IRQ line we might have selected. That
> > is the race this code addresses. For performance reasons, we want
> > both storage and network traffic to go over the PV drivers.
> So in case your driver gets the interrupt line first, which the other
> driver wants to acquire as well, then what? Do you want to do that
> probe magic in the other driver as well? What if this is a regular
> device driver which gets its irq number from ACPI/PCI or
> whatever. Then that driver simply wont work as it's interrupt line is
> > >
> > > I don't know why the previous reviewer wanted to have that
> > > dynamic. That just does not make sense to me.
> > Prior to this patch, we had a hard coded interrupt line for use by
> > this driver. If that line was already in use, the load of this driver
> > would fail. This would be a fatal issue especially for distributions
> > that have embedded these PV drivers as part of their installation
> > media. This patch deals with such collisions in a more graceful way -
> > we would not bail until we have scanned all low interrupt lines.
> So you trade breaking the PV stuff against breaking random other
> drivers? That doesn't sound like a brilliant idea.
> There are various ways to solve that proper.
> - You can provide the interrupt number from ACPI/PCI or whatever your HV
> provides as enumeration.
> - Use a fixed vector like XEN does for the event channel
> - Use dynamic allocation in the IOAPIC space like the kernel does for
I am not claiming that what I have done here is the best possible solution.
However, I will submit to you that it is better than what we had here
prior to this patch. I will address this and a whole lot of other issues
in future patches.
More information about the devel