[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: [PATCH] xen: make events.c compile for ia64.



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 <yamahata@xxxxxxxxxxxxx>

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 <asm/ptrace.h>
 #include <asm/irq.h>
-#include <asm/idle.h>
 #include <asm/sync_bitops.h>
 #include <asm/xen/hypercall.h>
 #include <asm/xen/hypervisor.h>
@@ -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 <asm/idle.h>
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 */




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.