Rather than try to make a xen_mpic_init and duplicate all the associated
machinery it pulls in, this patch introduces a feature flag.  I tried
the first approach, and it results in a lot of code duplication, which
is a worse maintenence burden than this, I believe.

Signed-off-by: Amos Waterland <[EMAIL PROTECTED]>

 arch/powerpc/platforms/xen/evtchn.c |    1 +
 arch/powerpc/sysdev/mpic.c          |    2 +-
 include/asm-powerpc/mpic.h          |    2 ++
 3 files changed, 4 insertions(+), 1 deletion(-)

diff -r f0be2cc05103 arch/powerpc/platforms/xen/evtchn.c
--- a/arch/powerpc/platforms/xen/evtchn.c       Fri Oct 13 12:36:39 2006 -0400
+++ b/arch/powerpc/platforms/xen/evtchn.c       Fri Oct 13 18:39:46 2006 -0400
@@ -106,6 +106,7 @@ static __init void xen_share_maple_init_
 
        mpic = mpic_alloc(opic_addr,
                          MPIC_PRIMARY | MPIC_BIG_ENDIAN |
+                         MPIC_SKIP_IPI_INIT |
                          MPIC_BROKEN_U3 /* | MPIC_WANTS_RESET */,
                          0, 0, 128, 128, senses, 128, "Xen-U3-MPIC");
        BUG_ON(mpic == NULL);
diff -r f0be2cc05103 arch/powerpc/sysdev/mpic.c
--- a/arch/powerpc/sysdev/mpic.c        Fri Oct 13 12:36:39 2006 -0400
+++ b/arch/powerpc/sysdev/mpic.c        Fri Oct 13 18:38:07 2006 -0400
@@ -743,7 +743,7 @@ void __init mpic_init(struct mpic *mpic)
 
        /* Initialize IPIs to our reserved vectors and mark them disabled for 
now */
        mpic_test_broken_ipi(mpic);
-       for (i = 0; i < 4; i++) {
+       for (i = 0; i < 4 && !(mpic->flags & MPIC_SKIP_IPI_INIT); i++) {
                mpic_ipi_write(i,
                               MPIC_VECPRI_MASK |
                               (10 << MPIC_VECPRI_PRIORITY_SHIFT) |
diff -r f0be2cc05103 include/asm-powerpc/mpic.h
--- a/include/asm-powerpc/mpic.h        Fri Oct 13 12:36:39 2006 -0400
+++ b/include/asm-powerpc/mpic.h        Fri Oct 13 18:38:13 2006 -0400
@@ -190,6 +190,8 @@ struct mpic
 #define MPIC_BROKEN_IPI                        0x00000008
 /* MPIC wants a reset */
 #define MPIC_WANTS_RESET               0x00000010
+/* Skip reset of IPI vectors during init */
+#define MPIC_SKIP_IPI_INIT             0x00000020
 
 /* Allocate the controller structure and setup the linux irq descs
  * for the range if interrupts passed in. No HW initialization is

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

Reply via email to