powerpc: Merge HvLpEvent.c into lpevents.c
authorStephen Rothwell <sfr@canb.auug.org.au>
Tue, 27 Sep 2005 16:18:47 +0000 (02:18 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Tue, 27 Sep 2005 16:18:47 +0000 (02:18 +1000)
These two files were intimately connected, so just merge them.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
arch/powerpc/platforms/iseries/lpevents.c
arch/ppc64/kernel/HvLpEvent.c [deleted file]
arch/ppc64/kernel/Makefile

index 819298a8a4db791d598b07cd99ec6a7ffa97321c..883603027ccf0a7bfd55ff9b3bcaf7694d924069 100644 (file)
@@ -18,6 +18,7 @@
 #include <asm/iSeries/ItLpQueue.h>
 #include <asm/iSeries/HvLpEvent.h>
 #include <asm/iSeries/HvCallEvent.h>
+#include <asm/iSeries/ItLpNaca.h>
 
 /*
  * The LpQueue is used to pass event data from the hypervisor to
@@ -42,7 +43,8 @@ static char *event_types[HvLpEvent_Type_NumTypes] = {
 };
 
 /* Array of LpEvent handler functions */
-extern LpEventHandler lpEventHandler[HvLpEvent_Type_NumTypes];
+static LpEventHandler lpEventHandler[HvLpEvent_Type_NumTypes];
+static unsigned lpEventHandlerPaths[HvLpEvent_Type_NumTypes];
 
 static struct HvLpEvent * get_next_hvlpevent(void)
 {
@@ -198,6 +200,70 @@ void setup_hvlpevent_queue(void)
        hvlpevent_queue.xIndex = 0;
 }
 
+/* Register a handler for an LpEvent type */
+int HvLpEvent_registerHandler(HvLpEvent_Type eventType, LpEventHandler handler)
+{
+       if (eventType < HvLpEvent_Type_NumTypes) {
+               lpEventHandler[eventType] = handler;
+               return 0;
+       }
+       return 1;
+}
+EXPORT_SYMBOL(HvLpEvent_registerHandler);
+
+int HvLpEvent_unregisterHandler(HvLpEvent_Type eventType)
+{
+       might_sleep();
+
+       if (eventType < HvLpEvent_Type_NumTypes) {
+               if (!lpEventHandlerPaths[eventType]) {
+                       lpEventHandler[eventType] = NULL;
+                       /*
+                        * We now sleep until all other CPUs have scheduled.
+                        * This ensures that the deletion is seen by all
+                        * other CPUs, and that the deleted handler isn't
+                        * still running on another CPU when we return.
+                        */
+                       synchronize_rcu();
+                       return 0;
+               }
+       }
+       return 1;
+}
+EXPORT_SYMBOL(HvLpEvent_unregisterHandler);
+
+/*
+ * lpIndex is the partition index of the target partition.
+ * needed only for VirtualIo, VirtualLan and SessionMgr.  Zero
+ * indicates to use our partition index - for the other types.
+ */
+int HvLpEvent_openPath(HvLpEvent_Type eventType, HvLpIndex lpIndex)
+{
+       if ((eventType < HvLpEvent_Type_NumTypes) &&
+                       lpEventHandler[eventType]) {
+               if (lpIndex == 0)
+                       lpIndex = itLpNaca.xLpIndex;
+               HvCallEvent_openLpEventPath(lpIndex, eventType);
+               ++lpEventHandlerPaths[eventType];
+               return 0;
+       }
+       return 1;
+}
+
+int HvLpEvent_closePath(HvLpEvent_Type eventType, HvLpIndex lpIndex)
+{
+       if ((eventType < HvLpEvent_Type_NumTypes) &&
+                       lpEventHandler[eventType] &&
+                       lpEventHandlerPaths[eventType]) {
+               if (lpIndex == 0)
+                       lpIndex = itLpNaca.xLpIndex;
+               HvCallEvent_closeLpEventPath(lpIndex, eventType);
+               --lpEventHandlerPaths[eventType];
+               return 0;
+       }
+       return 1;
+}
+
 static int proc_lpevents_show(struct seq_file *m, void *v)
 {
        int cpu, i;
diff --git a/arch/ppc64/kernel/HvLpEvent.c b/arch/ppc64/kernel/HvLpEvent.c
deleted file mode 100644 (file)
index 90032b1..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2001 Mike Corrigan IBM Corp
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-#include <linux/stddef.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <asm/system.h>
-#include <asm/iSeries/HvLpEvent.h>
-#include <asm/iSeries/HvCallEvent.h>
-#include <asm/iSeries/ItLpNaca.h>
-
-/* Array of LpEvent handler functions */
-LpEventHandler lpEventHandler[HvLpEvent_Type_NumTypes];
-unsigned lpEventHandlerPaths[HvLpEvent_Type_NumTypes];
-
-/* Register a handler for an LpEvent type */
-
-int HvLpEvent_registerHandler( HvLpEvent_Type eventType, LpEventHandler handler )
-{
-       int rc = 1;
-       if ( eventType < HvLpEvent_Type_NumTypes ) {
-               lpEventHandler[eventType] = handler;
-               rc = 0;
-       }
-       return rc;
-       
-}
-
-int HvLpEvent_unregisterHandler( HvLpEvent_Type eventType )
-{
-       int rc = 1;
-
-       might_sleep();
-
-       if ( eventType < HvLpEvent_Type_NumTypes ) {
-               if ( !lpEventHandlerPaths[eventType] ) {
-                       lpEventHandler[eventType] = NULL;
-                       rc = 0;
-
-                       /* We now sleep until all other CPUs have scheduled. This ensures that
-                        * the deletion is seen by all other CPUs, and that the deleted handler
-                        * isn't still running on another CPU when we return. */
-                       synchronize_rcu();
-               }
-       }
-       return rc;
-}
-EXPORT_SYMBOL(HvLpEvent_registerHandler);
-EXPORT_SYMBOL(HvLpEvent_unregisterHandler);
-
-/* (lpIndex is the partition index of the target partition.  
- * needed only for VirtualIo, VirtualLan and SessionMgr.  Zero
- * indicates to use our partition index - for the other types)
- */
-int HvLpEvent_openPath( HvLpEvent_Type eventType, HvLpIndex lpIndex )
-{
-       int rc = 1;
-       if ( eventType < HvLpEvent_Type_NumTypes &&
-            lpEventHandler[eventType] ) {
-               if ( lpIndex == 0 )
-                       lpIndex = itLpNaca.xLpIndex;
-               HvCallEvent_openLpEventPath( lpIndex, eventType );
-               ++lpEventHandlerPaths[eventType];
-               rc = 0;
-       }
-       return rc;
-}
-
-int HvLpEvent_closePath( HvLpEvent_Type eventType, HvLpIndex lpIndex )
-{
-       int rc = 1;
-       if ( eventType < HvLpEvent_Type_NumTypes &&
-            lpEventHandler[eventType] &&
-            lpEventHandlerPaths[eventType] ) {
-               if ( lpIndex == 0 )
-                       lpIndex = itLpNaca.xLpIndex;
-               HvCallEvent_closeLpEventPath( lpIndex, eventType );
-               --lpEventHandlerPaths[eventType];
-               rc = 0;
-       }
-       return rc;
-}
-
index f84ae358db0a2f15cc5bd8e48289ef0a145af95d..a4e5c5b86c74668b8a73821e2e49b3dd39e64431 100644 (file)
@@ -22,7 +22,7 @@ pci-obj-$(CONFIG_PPC_MULTIPLATFORM)   += pci_dn.o pci_direct_iommu.o
 
 obj-$(CONFIG_PCI)      += pci.o pci_iommu.o iomap.o $(pci-obj-y)
 
-obj-$(CONFIG_PPC_ISERIES) += HvLpEvent.o iSeries_proc.o iSeries_htab.o \
+obj-$(CONFIG_PPC_ISERIES) += iSeries_proc.o iSeries_htab.o \
                             iSeries_iommu.o
 
 obj-$(CONFIG_PPC_MULTIPLATFORM) += nvram.o i8259.o prom_init.o