From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Fitzhardinge Subject: Re: [PATCH] xen: make events.c compile for ia64. Date: Tue, 07 Oct 2008 08:10:44 -0700 Message-ID: <48EB7BF4.9060604@goop.org> References: <20081007022519.GD31420%yamahata@valinux.co.jp> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20081007022519.GD31420%yamahata@valinux.co.jp> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Isaku Yamahata Cc: xen-devel@lists.xensource.com, xen-ia64-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org Isaku Yamahata wrote: > This patch is for the pv_ops patch queue repository. > Later more generalization to events.c would be necessary because > it assumes x86. For example, LEGACY_IRQS doesn't make sense for ia64. > Since those bits are for dom0 support and pv_ops xen/ia64 doesn't > support dom0 yet, I made it just compile for ia64 for now. > Yeah, I'd assumed you'd define LEGACY_IRQS to 0. > xen: make events.c compile for ia64. > > xen_do_irq() is x86 specific because it calls > exit_idle(), handle_irq(). > Move it to arch specific file for ia64 support. > > Signed-off-by: Isaku Yamahata > > diff -r 4f7cc06552f8 drivers/xen/events.c > --- a/drivers/xen/events.c Mon Oct 06 15:24:22 2008 +0900 > +++ b/drivers/xen/events.c Mon Oct 06 16:02:56 2008 +0900 > @@ -29,7 +29,6 @@ > > #include > #include > -#include > #include > #include > #include > @@ -814,33 +813,6 @@ > return IRQ_HANDLED; > } > > - > -static void xen_do_irq(unsigned irq, struct pt_regs *regs) > I was hoping this would be generic enough to work on ia64, if you define an appropriate handle_irq() (and exit_idle, I guess). Is there something else you need to do here? > -{ > - struct pt_regs *old_regs = set_irq_regs(regs); > - > - if (WARN_ON(irq == -1)) > - return; > - > - { > - struct irq_info *info = info_for_irq(irq); > - > - if (info->type == IRQT_PIRQ) > - printk("xen_do_irq: pirq %d, gsi %d, vector %d\n", > - irq, info->u.pirq.gsi, info->u.pirq.vector); > - } > - > - exit_idle(); > - irq_enter(); > - > - //printk("cpu %d handling irq %d\n", smp_processor_id(), info->irq); > - handle_irq(irq, regs); > - > - irq_exit(); > - > - set_irq_regs(old_regs); > -} > - > /* > * Search the CPUs pending events bitmasks. For each one found, map > * the event number to an irq, and feed it into do_IRQ() for > diff -r 4f7cc06552f8 include/asm-x86/xen/events.h > --- a/include/asm-x86/xen/events.h Mon Oct 06 15:24:22 2008 +0900 > +++ b/include/asm-x86/xen/events.h Mon Oct 06 16:02:56 2008 +0900 > @@ -1,5 +1,7 @@ > #ifndef ASM_X86__XEN__EVENTS_H > #define ASM_X86__XEN__EVENTS_H > + > +#include > > enum ipi_vector { > XEN_RESCHEDULE_VECTOR, > @@ -15,4 +17,30 @@ > return raw_irqs_disabled_flags(regs->flags); > } > > +static inline void xen_do_irq(unsigned irq, struct pt_regs *regs) > +{ > + struct pt_regs *old_regs = set_irq_regs(regs); > + > + if (WARN_ON(irq == -1)) > + return; > + > + { > + struct irq_info *info = info_for_irq(irq); > + > + if (info->type == IRQT_PIRQ) > + printk("xen_do_irq: pirq %d, gsi %d, vector %d\n", > + irq, info->u.pirq.gsi, info->u.pirq.vector); > + } > + > + exit_idle(); > + irq_enter(); > + > + //printk("cpu %d handling irq %d\n", smp_processor_id(), info->irq); > + handle_irq(irq, regs); > + > + irq_exit(); > + > + set_irq_regs(old_regs); > +} > + > #endif /* ASM_X86__XEN__EVENTS_H */ > > >