[PATCH 7/25] [PATCH] interrupt related native paravirt functions.

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-kernel@...>
Cc: <akpm@...>, <rusty@...>, <ak@...>, <mingo@...>, <chrisw@...>, <jeremy@...>, <avi@...>, <anthony@...>, <virtualization@...>, <lguest@...>, Glauber de Oliveira Costa <gcosta@...>, Steven Rostedt <rostedt@...>
Date: Wednesday, August 8, 2007 - 12:18 am

The interrupt initialization routine becomes native_init_IRQ and will
be overriden later in case paravirt is on.

The interrupt vector is made global, so paravirt guests can reference
it in their initializations. However, "interrupt" is such a common
name, and could lead to clashes, so it is renamed.

Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
 arch/x86_64/kernel/i8259.c |   15 +++++++++++----
 include/asm-x86_64/irq.h   |    2 ++
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/arch/x86_64/kernel/i8259.c b/arch/x86_64/kernel/i8259.c
index 948cae6..8dda872 100644
--- a/arch/x86_64/kernel/i8259.c
+++ b/arch/x86_64/kernel/i8259.c
@@ -75,8 +75,12 @@ BUILD_16_IRQS(0xc) BUILD_16_IRQS(0xd) BUILD_16_IRQS(0xe) BUILD_16_IRQS(0xf)
 	IRQ(x,8), IRQ(x,9), IRQ(x,a), IRQ(x,b), \
 	IRQ(x,c), IRQ(x,d), IRQ(x,e), IRQ(x,f)
 
-/* for the irq vectors */
-static void (*interrupt[NR_VECTORS - FIRST_EXTERNAL_VECTOR])(void) = {
+/*
+ * For the irq vectors. It is global rather than static to allow for
+ * paravirtualized guests to use it in their own interrupt initialization
+ * routines
+ */
+void (*interrupt_vector[NR_VECTORS - FIRST_EXTERNAL_VECTOR])(void) = {
 					  IRQLIST_16(0x2), IRQLIST_16(0x3),
 	IRQLIST_16(0x4), IRQLIST_16(0x5), IRQLIST_16(0x6), IRQLIST_16(0x7),
 	IRQLIST_16(0x8), IRQLIST_16(0x9), IRQLIST_16(0xa), IRQLIST_16(0xb),
@@ -484,7 +488,10 @@ static int __init init_timer_sysfs(void)
 
 device_initcall(init_timer_sysfs);
 
-void __init init_IRQ(void)
+/* Overridden in paravirt.c */
+void init_IRQ(void) __attribute__((weak, alias("native_init_IRQ")));
+
+void __init native_init_IRQ(void)
 {
 	int i;
 
@@ -497,7 +504,7 @@ void __init init_IRQ(void)
 	for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) {
 		int vector = FIRST_EXTERNAL_VECTOR + i;
 		if (vector != IA32_SYSCALL_VECTOR)
-			set_intr_gate(vector, interrupt[i]);
+			set_intr_gate(vector, interrupt_vector[i]);
 	}
 
 #ifdef CONFIG_SMP
diff --git a/include/asm-x86_64/irq.h b/include/asm-x86_64/irq.h
index 5006c6e..be55299 100644
--- a/include/asm-x86_64/irq.h
+++ b/include/asm-x86_64/irq.h
@@ -46,6 +46,8 @@ static __inline__ int irq_canonicalize(int irq)
 extern void fixup_irqs(cpumask_t map);
 #endif
 
+void native_init_IRQ(void);
+
 #define __ARCH_HAS_DO_SOFTIRQ 1
 
 #endif /* _ASM_IRQ_H */
-- 
1.4.4.2

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Introducing paravirt_ops for x86_64, Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
RE: Introducing paravirt_ops for x86_64, Nakajima, Jun, (Wed Aug 8, 10:53 am)
Re: Introducing paravirt_ops for x86_64, Glauber de Oliveira Costa..., (Wed Aug 8, 10:58 am)
Re: Introducing paravirt_ops for x86_64, Jeremy Fitzhardinge, (Thu Aug 9, 1:35 am)
Re: [Lguest] Introducing paravirt_ops for x86_64, Steven Rostedt, (Thu Aug 9, 8:46 am)
RE: Introducing paravirt_ops for x86_64, Nakajima, Jun, (Wed Aug 8, 8:28 pm)
Re: Introducing paravirt_ops for x86_64, Glauber de Oliveira Costa..., (Wed Aug 8, 8:31 pm)
[PATCH 1/25] [PATCH] header file move, Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
[PATCH 2/25] [PATCH] tlb flushing routines, Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
[PATCH 3/25] [PATCH] irq_flags / halt routines, Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
Re: [PATCH 3/25] [PATCH] irq_flags / halt routines, Andi Kleen, (Wed Aug 8, 5:14 am)
Re: [PATCH 3/25] [PATCH] irq_flags / halt routines, Glauber de Oliveira Costa..., (Thu Aug 9, 3:29 am)
Re: [PATCH 3/25] [PATCH] irq_flags / halt routines, Glauber de Oliveira Costa..., (Wed Aug 8, 10:10 am)
Re: [PATCH 3/25] [PATCH] irq_flags / halt routines, Andi Kleen, (Wed Aug 8, 10:14 am)
Re: [PATCH 3/25] [PATCH] irq_flags / halt routines, Glauber de Oliveira Costa..., (Wed Aug 8, 10:23 am)
[PATCH 4/25] [PATCH] Add debugreg/load_rsp native hooks, Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
Re: [PATCH 4/25] [PATCH] Add debugreg/load_rsp native hooks, Glauber de Oliveira Costa..., (Thu Aug 9, 1:49 am)
Re: [PATCH 4/25] [PATCH] Add debugreg/load_rsp native hooks, Jeremy Fitzhardinge, (Thu Aug 9, 1:47 am)
[PATCH 5/25] [PATCH] native versions for system.h functions, Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
Re: [PATCH 5/25] [PATCH] native versions for system.h functi..., Glauber de Oliveira Costa..., (Wed Aug 8, 3:29 am)
[PATCH 6/25] [PATCH] add native_apic read and write function..., Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
[PATCH 7/25] [PATCH] interrupt related native paravirt funct..., Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
Re: [PATCH 7/25] [PATCH] interrupt related native paravirt f..., Jeremy Fitzhardinge, (Thu Aug 9, 1:52 am)
[PATCH 8/25] [PATCH] use macro for sti/cli in spinlock defin..., Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
[PATCH 9/25] [PATCH] report ring kernel is running without p..., Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
[PATCH 10/25] [PATCH] export math_state_restore, Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
[PATCH 11/25] [PATCH] introduce paravirt_release_pgd(), Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
[PATCH 12/25] [PATCH] native versions for set pagetables, Glauber de Oliveira Costa..., (Wed Aug 8, 12:18 am)
[PATCH 13/25] [PATCH] turn msr.h functions into native versi..., Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
Re: [PATCH 13/25] [PATCH] turn msr.h functions into native v..., Glauber de Oliveira Costa..., (Wed Aug 8, 10:19 am)
[PATCH 14/25] [PATCH] add native functions for descriptors h..., Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
[PATCH 15/25] [PATCH] get rid of inline asm for load_cr3, Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
[PATCH 16/25] [PATCH] introducing paravirt_activate_mm, Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
[PATCH 17/25] [PATCH] turn page operations into native versi..., Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
[PATCH 18/25] [PATCH] turn priviled operations into macros i..., Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
Re: [PATCH 18/25] [PATCH] turn priviled operations into macr..., Glauber de Oliveira Costa..., (Wed Aug 8, 9:58 am)
Re: [PATCH 18/25] [PATCH] turn priviled operations into macr..., Glauber de Oliveira Costa..., (Wed Aug 8, 10:53 am)
Re: [PATCH 18/25] [PATCH] turn priviled operations into macr..., Glauber de Oliveira Costa..., (Wed Aug 8, 10:00 am)
Re: [PATCH 18/25] [PATCH] turn priviled operations into macr..., Jeremy Fitzhardinge, (Thu Aug 9, 1:21 am)
[PATCH 19/25] [PATCH] time-related functions paravirt provis..., Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
[PATCH 20/25] [PATCH] replace syscall_init, Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
[PATCH 21/25] [PATCH] export cpu_gdt_descr, Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
Re: [PATCH 21/25] [PATCH] export cpu_gdt_descr, Arjan van de Ven, (Wed Aug 8, 7:32 am)
Re: [PATCH 21/25] [PATCH] export cpu_gdt_descr, Glauber de Oliveira Costa..., (Wed Aug 8, 10:24 am)
[PATCH 22/25] [PATCH] turn priviled operation into a macro, Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
[PATCH 23/25] [PATCH] paravirt hooks for arch initialization, Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
Re: [PATCH 23/25] [PATCH] paravirt hooks for arch initializa..., Jeremy Fitzhardinge, (Thu Aug 9, 1:43 pm)
Re: [PATCH 23/25] [PATCH] paravirt hooks for arch initializa..., Glauber de Oliveira Costa..., (Fri Aug 10, 2:08 pm)
Re: [PATCH 23/25] [PATCH] paravirt hooks for arch initializa..., Jeremy Fitzhardinge, (Fri Aug 10, 2:51 pm)
Re: [PATCH 23/25] [PATCH] paravirt hooks for arch initializa..., Glauber de Oliveira Costa..., (Fri Aug 10, 3:17 pm)
Re: [PATCH 23/25] [PATCH] paravirt hooks for arch initializa..., Jeremy Fitzhardinge, (Fri Aug 10, 4:01 pm)
Re: [PATCH 23/25] [PATCH] paravirt hooks for arch initializa..., Glauber de Oliveira Costa..., (Fri Aug 10, 4:13 pm)
Re: [PATCH 23/25] [PATCH] paravirt hooks for arch initializa..., Jeremy Fitzhardinge, (Fri Aug 10, 4:30 pm)
Re: [PATCH 23/25] [PATCH] paravirt hooks for arch initializa..., Glauber de Oliveira Costa..., (Wed Aug 8, 10:08 am)
[PATCH 24/25] [PATCH] provide paravirt patching function, Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
[PATCH 25/25] [PATCH] add paravirtualization support for x86..., Glauber de Oliveira Costa..., (Wed Aug 8, 12:19 am)
Re: [PATCH 25/25] [PATCH] add paravirtualization support for..., Jeremy Fitzhardinge, (Thu Aug 9, 2:35 am)
Re: [PATCH 25/25] [PATCH] add paravirtualization support for..., Glauber de Oliveira Costa..., (Thu Aug 9, 3:02 am)
Re: [PATCH 25/25] [PATCH] add paravirtualization support for..., Jeremy Fitzhardinge, (Thu Aug 9, 3:02 am)
Re: [PATCH 25/25] [PATCH] add paravirtualization support for..., Glauber de Oliveira Costa..., (Thu Aug 9, 3:07 am)
Re: [PATCH 25/25] [PATCH] add paravirtualization support for..., Jeremy Fitzhardinge, (Thu Aug 9, 3:12 am)
Re: [PATCH 25/25] [PATCH] add paravirtualization support for..., Jeremy Fitzhardinge, (Thu Aug 9, 2:53 am)
Re: [PATCH 25/25] [PATCH] add paravirtualization support for..., Jeremy Fitzhardinge, (Thu Aug 9, 11:09 am)
Re: [PATCH 25/25] [PATCH] add paravirtualization support for..., Glauber de Oliveira Costa..., (Wed Aug 8, 10:49 am)
Re: [PATCH 25/25] [PATCH] add paravirtualization support for..., Jeremy Fitzhardinge, (Thu Aug 9, 1:38 am)