Messages in this thread | | | Date | Sat, 19 Feb 2011 11:23:04 +0100 (CET) | From | Thomas Gleixner <> | Subject | Re: [PATCH]: Staging: hv: Allocate the vmbus irq dynamically |
| |
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
| |