* [PATCH] xen: make events.c compile for ia64.
@ 2008-10-07 2:25 Isaku Yamahata
2008-10-07 15:10 ` Jeremy Fitzhardinge
0 siblings, 1 reply; 3+ messages in thread
From: Isaku Yamahata @ 2008-10-07 2:25 UTC (permalink / raw)
To: jeremy; +Cc: xen-devel, xen-ia64-devel
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.
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@valinux.co.jp>
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)
-{
- 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 */
--
yamahata
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] xen: make events.c compile for ia64.
2008-10-07 2:25 [PATCH] xen: make events.c compile for ia64 Isaku Yamahata
@ 2008-10-07 15:10 ` Jeremy Fitzhardinge
2008-10-10 6:50 ` Isaku Yamahata
0 siblings, 1 reply; 3+ messages in thread
From: Jeremy Fitzhardinge @ 2008-10-07 15:10 UTC (permalink / raw)
To: Isaku Yamahata; +Cc: xen-devel, xen-ia64-devel
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@valinux.co.jp>
>
> 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 */
>
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] xen: make events.c compile for ia64.
2008-10-07 15:10 ` Jeremy Fitzhardinge
@ 2008-10-10 6:50 ` Isaku Yamahata
0 siblings, 0 replies; 3+ messages in thread
From: Isaku Yamahata @ 2008-10-10 6:50 UTC (permalink / raw)
To: Jeremy Fitzhardinge; +Cc: xen-devel, xen-ia64-devel
On Tue, Oct 07, 2008 at 08:10:44AM -0700, Jeremy Fitzhardinge wrote:
> >-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?
By reviewing my patches, I found that the logic itself is generic enough.
But can we prefix exit_idle() and handle_irq() with xen_?
They are too generic to be defined in arch xen code.
xen: make events.c portable.
- prefix xen_ to exit_idle(), handle_irq().
They are too generic name to be defined in arch xen specific code.
- move #include <asm/idle.h> from events.c to include/asm-x86/xen/event.h
only x86 has it.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
diff -r 9e8842013b3b drivers/xen/events.c
--- a/drivers/xen/events.c Mon Oct 06 16:11:39 2008 +0900
+++ b/drivers/xen/events.c Fri Oct 10 15:40:44 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>
@@ -830,11 +829,11 @@
irq, info->u.pirq.gsi, info->u.pirq.vector);
}
- exit_idle();
+ xen_exit_idle();
irq_enter();
//printk("cpu %d handling irq %d\n", smp_processor_id(), info->irq);
- handle_irq(irq, regs);
+ xen_handle_irq(irq, regs);
irq_exit();
diff -r 9e8842013b3b include/asm-x86/xen/events.h
--- a/include/asm-x86/xen/events.h Mon Oct 06 16:11:39 2008 +0900
+++ b/include/asm-x86/xen/events.h Fri Oct 10 15:40:44 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,14 @@
return raw_irqs_disabled_flags(regs->flags);
}
+static inline void xen_exit_idle(void)
+{
+ exit_idle();
+}
+
+static inline void xen_handle_irq(unsigned irq, struct pt_regs *regs)
+{
+ handle_irq(irq, regs);
+}
+
#endif /* ASM_X86__XEN__EVENTS_H */
--
yamahata
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-10-10 6:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-07 2:25 [PATCH] xen: make events.c compile for ia64 Isaku Yamahata
2008-10-07 15:10 ` Jeremy Fitzhardinge
2008-10-10 6:50 ` Isaku Yamahata
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.