On Tue, 15 Feb 2011, K. Y. Srinivasan wrote: > -/* FIXME! We need to do this dynamically for PIC and APIC system */ > -#define VMBUS_IRQ 0x5 > -#define VMBUS_IRQ_VECTOR IRQ5_VECTOR > +static int vmbus_irq; > > /* Main vmbus driver data structure */ > struct vmbus_driver_context { > @@ -57,6 +55,27 @@ struct vmbus_driver_context { > struct vm_device device_ctx; > }; > > +/* > + * Find an un-used IRQ that the VMBUS can use. If none is available; > + * return -EBUSY. > + */ > +static int vmbus_get_irq(void) > +{ > + unsigned int avail_irq_mask; > + int irq = -EBUSY; > + > + /* > + * Pick the first unused interrupt. HyperV can > + * interrupt us on any interrupt line we specify. > + */ > + > + avail_irq_mask = probe_irq_on(); > + if (avail_irq_mask != 0) > + irq = ffs(avail_irq_mask); > + probe_irq_off(avail_irq_mask); > + return irq; Please do not use probe_irq_on for dynamic irq allocation. Highjacking the lower PIC irqs is really not a good idea. Depending on when this runs, you might grab an irq required by a driver which gets loaded later. Could you please explain what you're trying to do here ? Thanks, tglx _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel