All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.