On Wed, Sep 24, 2008 at 03:51:55PM +0800, Xu, Anthony wrote:
> request_irq is needed by VTD
>
> Signed-off-by; Anthony Xu < anthony.xu@xxxxxxxxx >
>
>
> diff -r 64d6ad484229 xen/arch/ia64/linux-xen/irq_ia64.c
> --- a/xen/arch/ia64/linux-xen/irq_ia64.c Wed Sep 24 14:58:31 2008 +0800
> +++ b/xen/arch/ia64/linux-xen/irq_ia64.c Wed Sep 24 15:20:48 2008 +0800
> @@ -266,6 +266,42 @@
> }
> }
>
> +int request_irq(unsigned int irq,
> + void (*handler)(int, void *, struct cpu_user_regs *),
> + unsigned long irqflags, const char * devname, void *dev_id)
> +{
> + struct irqaction * action;
> + int retval=0;
> +
> + /*
> + * Sanity-check: shared interrupts must pass in a real dev-ID,
> + * otherwise we'll have trouble later trying to figure out
> + * which interrupt is which (messes up the interrupt freeing logic etc).
> + * */
> + if (irq >= NR_IRQS)
> + return -EINVAL;
> + if (!handler)
> + return -EINVAL;
> +
> + action = xmalloc(struct irqaction);
> + if (!action)
> + return -ENOMEM;
> +
> + action->handler = handler;
> + action->name = devname;
> + action->dev_id = dev_id;
> +#ifdef XEN
> + setup_vector(irq, action);
> +#else
> + retval = setup_irq(irq, action);
> +#endif
> + if (retval)
> + xfree(action);
> +
> + return retval;
> +}
> +
> +
> void __init
> init_IRQ (void)
> {
request_irq() isn't defined in Linux 2.6.13 irq_ia64.c, but
in kernel/irq/manage.c. And the above code doesn't match the one
in manage.c (except ifdef XEN).
Probably it would be better to surround whole request_irq()
with #ifdef XEN.
thanks,
--
yamahata
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|