[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [XenPPC] [linux-ppc-2.6] [POWERPC][XEN] Make MPIC sharing between Xen and Dom0 optional
# HG changeset patch # User Jimi Xenidis <jimix@xxxxxxxxxxxxxx> # Node ID a2d836b6ab41c273826bfba8ebe30ac63f153e93 # Parent 199b457c43256143561ea7943d40ce72713c73b0 [POWERPC][XEN] Make MPIC sharing between Xen and Dom0 optional Tho right now it is the only option. Signed-off-by: Jimi Xenidis <jimix@xxxxxxxxxxxxxx> --- arch/powerpc/platforms/xen/evtchn.c | 36 +++++++++++++++++++++--------------- arch/powerpc/platforms/xen/setup.c | 5 +++++ 2 files changed, 26 insertions(+), 15 deletions(-) diff -r 199b457c4325 -r a2d836b6ab41 arch/powerpc/platforms/xen/evtchn.c --- a/arch/powerpc/platforms/xen/evtchn.c Mon Aug 28 18:43:52 2006 -0500 +++ b/arch/powerpc/platforms/xen/evtchn.c Thu Aug 31 17:47:08 2006 -0400 @@ -1,4 +1,3 @@ - #define DEBUG #include <linux/module.h> @@ -16,8 +15,10 @@ #endif /* - * We are currently letting Dom0 control the mpic. However, Xen will - * Ack all interrupts. Here is how it works: + * The following code, shares the MPIV controller between Xen and + * Dom0. However, Xen will Ack all interrupts. Here is how it works: + * the controlling of the PIC with Dom0. However, Xen will Ack all + * interrupts. Here is how it works: * * 1. Dom0 sees a device and uses the and requests that Xen binds * the IRQ to it. @@ -32,12 +33,6 @@ struct hw_interrupt_type *xen_pirq; struct hw_interrupt_type *xen_pirq; static struct hw_interrupt_type hc_irq; extern struct machdep_calls mach_maple_md; - -int xen_get_irq(struct pt_regs *regs) -{ - evtchn_do_upcall(regs); - return -1; -} static unsigned int xen_startup_irq(unsigned int irq) { @@ -80,14 +75,9 @@ static inline struct mpic *mpic_from_irq return container_of(irq_desc[irq].chip, struct mpic, hc_irq); } -void xen_maple_init_IRQ(void) +static void xen_share_pic(void) { struct mpic *mpic; - - xen_init_IRQ(); - - if (!(xen_start_info->flags & SIF_INITDOMAIN)) - return; xen_pirq = irq_desc[0].chip; mach_maple_md.init_IRQ(); @@ -112,5 +102,21 @@ void xen_maple_init_IRQ(void) hc_irq.end = mpic->hc_irq.end; mpic->hc_irq.end = xen_end_irq; +} +void xen_maple_init_IRQ(void) +{ + xen_init_IRQ(); + + if (!(xen_start_info->flags & SIF_INITDOMAIN)) + return; + + printk("Sharing PIC with Xen"); + xen_share_pic(); } + +int xen_get_irq(struct pt_regs *regs) +{ + evtchn_do_upcall(regs); + return -1; +} diff -r 199b457c4325 -r a2d836b6ab41 arch/powerpc/platforms/xen/setup.c --- a/arch/powerpc/platforms/xen/setup.c Mon Aug 28 18:43:52 2006 -0500 +++ b/arch/powerpc/platforms/xen/setup.c Thu Aug 31 17:47:08 2006 -0400 @@ -1,6 +1,7 @@ #define DEBUG #undef XENPPC_USE_IDLE +#define CONFIG_SHARE_MPIC #include <linux/module.h> #include <linux/rwsem.h> @@ -298,7 +299,11 @@ define_machine(xen) { .probe = xen_probe, .setup_arch = xen_setup_arch, .init_early = xen_init_early, +#ifdef CONFIG_SHARE_MPIC .init_IRQ = xen_maple_init_IRQ, +#else + .init_IRQ = xen_init_IRQ, +#endif .get_irq = xen_get_irq, .get_boot_time = 0, .set_rtc_time = 0, _______________________________________________ Xen-ppc-devel mailing list Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ppc-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |